找回密码
 立即注册

QQ登录

只需一步,快速开始

低调的繁华
金牌服务用户   /  发表于:2024-5-15 11:29  /   查看:1770  /  回复:9
本帖最后由 Richard.Huang 于 2024-5-16 10:58 编辑

产品:GcExcel
版本:V7.0.3
调研编号:DOCXLS-10364

模板如图所示:
image.png114685973.png

删除代码如下:
// 垂直还原 table
IWorksheet worksheet8 = workbook.getWorksheets().get("Sheet8");
IRange range2 = worksheet8.getRange("A3:A7");

IRange rowRange2 = range2.getRows();
rowRange2.delete(DeleteShiftDirection.Up);// 运行异常Exception in thread "main" java.lang.IllegalStateException: Invalid operation.        at com.grapecity.documents.excel.I.aU.b(Unknown Source)        at com.grapecity.documents.excel.I.aU.a(Unknown Source)        at com.grapecity.documents.excel.dF.a(Unknown Source)        at com.grapecity.documents.excel.ci.delete(Unknown Source)        at org.example.Main.main(Main.java:32)

GcExcel_static 2.zip

85.27 KB, 下载次数: 760

9 个回复

倒序浏览
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-15 11:55:58
沙发
您好,请问您的具体需求是什么,如果是要删除表格,完全可以执行以下代码:worksheet8.getTables().get(0).delete();
表格的删除可以参考这篇产品文档:https://www.grapecity.com.cn/dev ... /CreateDeleteTables
回复 使用道具 举报
低调的繁华
金牌服务用户   /  发表于:2024-5-15 12:22:05
板凳
Richard.Huang 发表于 2024-5-15 11:55
您好,请问您的具体需求是什么,如果是要删除表格,完全可以执行以下代码:worksheet8.getTables().get(0). ...

我想删除表格的某一列的指定行区域的数据
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-15 16:05:30
地板
低调的繁华 发表于 2024-5-15 12:22
我想删除表格的某一列的指定行区域的数据

了解了,您可以参考以下代码,将您的delete换成clearContent,getRow换成getEntireRow:
  1. Workbook workbook = new Workbook();
  2. workbook.open("data/demo.sjs");
  3. IWorksheet worksheet8 = workbook.getWorksheets().get("Sheet8");
  4. IRange range2 = worksheet8.getRange("A6");
  5. IRange rowRange2 = range2.getEntireRow();
  6. rowRange2.clearContents();
  7. workbook.save("data/test.xlsx",SaveFileFormat.Xlsx);
复制代码
回复 使用道具 举报
低调的繁华
金牌服务用户   /  发表于:2024-5-15 16:23:09
5#
本帖最后由 低调的繁华 于 2024-5-15 16:29 编辑
Richard.Huang 发表于 2024-5-15 16:05
了解了,您可以参考以下代码,将您的delete换成clearContent,getRow换成getEntireRow:

您好 你提供的这种方法是实现了整个行的内容清空,但是我想实现的是另外一种情况,像"https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=218741&page=1#pid799690"这个案例中的sheet8的效果一样,只不过是目前加了表格然后实现相关场景。您看看可以做到吗?
回复 使用道具 举报
RoyAji
初级会员   /  发表于:2024-5-15 17:11:34
6#
本帖最后由 RoyAji 于 2024-5-15 17:14 编辑
低调的繁华 发表于 2024-5-15 16:23
您好 你提供的这种方法是实现了整个行的内容清空,但是我想实现的是另外一种情况,像"https://gcdn.grape ...

表格是一个整体,只能表格的某一行整体删除,没法只删除某一部分让表格某一列有X行,而另外一列有Y行(毕竟表格就只能N列M行是个整体)。
例如楼主模板里面的Sheet8存在一个table,删除table的第2行开始的内容(不包含表头,行号从1开始),就可以调用
  1. IWorksheet worksheet8 = workbook.getWorksheets().get("Sheet8");
  2. worksheet8.getTables().get("Table2").getRows().delete(1, 4);
复制代码

或者让要删除的区域包含表格的整行
  1. IWorksheet worksheet8 = workbook.getWorksheets().get("Sheet8");
  2. worksheet8.getRange("A3:B6").delete(DeleteShiftDirection.Up);
复制代码


评分

参与人数 1金币 +500 收起 理由
Joestar.Xu + 500 赞一个!

查看全部评分

回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-5-15 17:48:41
7#
RoyAji 发表于 2024-5-15 17:11
表格是一个整体,只能表格的某一行整体删除,没法只删除某一部分让表格某一列有X行,而另外一列有Y行(毕 ...

回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-15 17:55:53
8#
本帖最后由 Richard.Huang 于 2024-5-16 10:58 编辑

您可以参考楼上同学的回复,在表格区域删除部分这是无法做到的。其次我们在不允许用户删除时控制台的错误提示不够明确的问题我们会进行相关的调研,后续有相关调研进展我会第一时间在本贴中进行跟进。调研编号:DOCXLS-10364

然后对于本帖中的问题,请问您是基于什么样的需求需要对这个表格区域中删除部分表格区域呢。
回复 使用道具 举报
低调的繁华
金牌服务用户   /  发表于:2024-5-15 18:55:11
9#
本帖最后由 低调的繁华 于 2024-5-16 10:24 编辑
Richard.Huang 发表于 2024-5-15 17:55
您可以参考楼上同学的回复,在表格区域删除部分这是无法做到的。其次我们在不允许用户删除时控制台的错误提 ...
我已经想到解决方案了 谢谢您嘞
回复 使用道具 举报
Richard.HuangSpreadJS 开发认证
超级版主   /  发表于:2024-5-16 10:58:34
10#
低调的繁华 发表于 2024-5-15 18:55
我已经想到解决方案了 谢谢您嘞

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部