找回密码
 立即注册

QQ登录

只需一步,快速开始

重点用户

注册会员

1

主题

5

帖子

24

积分

注册会员

积分
24
  • 104

    金币

  • 1

    主题

  • 5

    帖子

最新发帖
重点用户
注册会员   /  发表于:2024-10-10 16:56  /   查看:444  /  回复:10
1金币
本帖最后由 Wilson.Zhang 于 2024-11-13 13:52 编辑

产品:GcExcel
版本:7.1.0
调研编号:DOCXLS-11304
Last Review:2024-11-13
当前进展:计划在8.0.0版本支持。

读取本地有格式的Excel后,数据行有256行,总行数有314行,尝试使用wordSheet.getRange("256:314").delete()删除非数据行,删除后使用worksheet.getRowCount()显示数据仍然有314行

公式编辑栏.png347412108.png

SpreadJS+公式编辑框.html

4.37 KB, 下载次数: 0

10 个回复

倒序浏览
Wilson.Zhang
超级版主   /  发表于:2024-10-10 17:41:16
沙发
您好!从您的描述中了解到您想要删除的是一整行,而("256:314")在此代表从第256行到第314行。IRange:delete()可以删除一个单元格,也可以删除一系列单元格,删除范围取决于调用者IRange实例。

对于您的需求,可以参考如下代码删除目标行:
  1. //  删除第314行
  2. worksheet.getRange("314:315").delete();
  3. //  删除行索引为313的整行
  4. worksheet.getRange(313, 0, 1, worksheet.getColumnCount()).delete();
复制代码


回复 使用道具 举报
重点用户
注册会员   /  发表于:2024-10-10 19:17:24
板凳
Wilson.Zhang 发表于 2024-10-10 17:41
您好!从您的描述中了解到您想要删除的是一整行,而("256:314")在此代表从第256行到第314行。IRange:delete ...

我想删除的就是256到314行,并且删除后rowCount显示正确
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-11 08:59:07
地板
重点用户 发表于 2024-10-10 19:17
我想删除的就是256到314行,并且删除后rowCount显示正确

按照您的删除方式确实可以删除指定行范围,IRange:delete()在删除单元格时会将其他单元格移动以填充被删除的单元格,因此,删除前后IWorksheet:getRowCount()的结果不变。可以通过IWorksheet:getUsedRange()获取已使用的单元格范围,同时可以指定使用类型,如下图所示为API介绍。在获取到已使用单元格范围后,再通过IRange:getRowCount()即可得到被使用单元格范围行数。
1728608263892.png321066893.png

可以参考官网API文档了解详情:
https://www.grapecity.com.cn/developer/grapecitydocuments/excel-java/docs/JavaAPIDocumentation?api-url=%2Fgc-excel-java%2Fapi-docs%2Fv7.2%2Fcom%2Fgrapecity%2Fdocuments%2Fexcel%2FIWorksheet.html%23getUsedRange()


回复 使用道具 举报
重点用户
注册会员   /  发表于:2024-10-11 09:27:21
5#
Wilson.Zhang 发表于 2024-10-11 08:59
按照您的删除方式确实可以删除指定行范围,IRange:delete()在删除单元格时会将其他单元格移动以填充被删 ...

自动填充后行数一直保持314行,我只想展示数据行为256,怎么处理呢
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-11 11:55:45
6#
重点用户 发表于 2024-10-11 09:27
自动填充后行数一直保持314行,我只想展示数据行为256,怎么处理呢

试一下为工作表重新设置总行数,即,通过IWorksheet:setRowCount()将工作表总行数设置为删除行后已使用单元格区域的总行数。如下图所示,IWorksheet:setRowCount()设置当前工作表导出为json时的行数。
IWorksheet-setRowCount.png208888243.png
回复 使用道具 举报
重点用户
注册会员   /  发表于:2024-10-11 16:42:23
7#
Wilson.Zhang 发表于 2024-10-11 11:55
试一下为工作表重新设置总行数,即,通过IWorksheet:setRowCount()将工作表总行数设置为删除行后已使用单 ...

但是workbook.tojson后我手动设置的rowCount没有生效,而是回到了开始系统默认的rowCount
回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-11 17:46:24
8#
重点用户 发表于 2024-10-11 16:42
但是workbook.tojson后我手动设置的rowCount没有生效,而是回到了开始系统默认的rowCount

”回到系统开始默认的rowCount“是SpreadJS默认的200行吗?顺便确认下您使用的版本,我们在7.2版本测试。

不是在workbook.toJson()后手动设置rowCount。首先,在删除行后,获取当前被使用区域的行数,即worksheet.getUsedRange().getRowCount()。然后,将上一步获取的值,通过worksheet.setRowCount()设置为sheet的总行数。试下这样操作。
回复 使用道具 举报
重点用户
注册会员   /  发表于:2024-10-12 10:07:36
9#
本帖最后由 重点用户 于 2024-10-12 10:08 编辑
Wilson.Zhang 发表于 2024-10-11 17:46
”回到系统开始默认的rowCount“是SpreadJS默认的200行吗?顺便确认下您使用的版本,我们在7.2版本测试。 ...

1. 默认行数随机变化,有时和数据行数保持一致,有时会多出空行
2. GCExcel版本为7.1.0

3. 我先setRowCount,然后workbook.toJson。再去拿json里的rowCount发现我set的没有生效

回复 使用道具 举报
Wilson.Zhang
超级版主   /  发表于:2024-10-12 15:52:52
10#
重点用户 发表于 2024-10-12 10:07
1. 默认行数随机变化,有时和数据行数保持一致,有时会多出空行
2. GCExcel版本为7.1.0

了解情况了,我们复现了问题现象。调研下这个现象先,调研编号为DOCXLS-11304。需要一些时间分析,之后会及时向您同步结论,请您耐心等待。
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部