找回密码
 立即注册

QQ登录

只需一步,快速开始

浩淼

注册会员

16

主题

59

帖子

157

积分

注册会员

积分
157
浩淼
注册会员   /  发表于:2021-8-16 17:25  /   查看:3503  /  回复:16
我想获取文件中有内容的区域的属性,但是用UsedRange获取到的区域好像比实际只有内容的区域大很多,有没有办法只获取有内容的区域呢?
workbook.ActiveSheet.UsedRange.Interior.Color = Color.Pink;
QQ截图20210816172019.png

16 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-17 10:35:21
推荐
本帖最后由 Richard.Ma 于 2021-8-18 09:33 编辑

您发过来的文件我看了一下,用excel打开确实看不出空白区域有什么修改,但是如上面的回帖所说,任何的属性修改都会被判定为usedrange,这个没有办法一一帮您排查,也没有必要
如果是针对于这个文件的话,只要删除掉目前的usedrange中空白的行,列即可。获取到的usedrange就都是你文件中实际的使用区域了

如果你只是单纯要获取“只获取有文本内容的区域”,可以使用
  1. workbook.ActiveSheet.GetUsedRange(UsedRangeType.Data)
复制代码
来获取,但这这个不能完全解决你标题中的问题,比如你这边的模板实际使用区域最右侧列或者最下侧行并没有文字只有边框等样式,就获取不到了

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-16 17:57:31
沙发
UsedRange获取到的区域包括您这边修改了单元格的值,或者其他的属性,样式等,都会被认为是UsedRange,不一定都是有文本内容的,

具体到您这边的这个文件,您可以发给我,我帮您看看原因
回复 使用道具 举报
浩淼
注册会员   /  发表于:2021-8-16 18:09:24
板凳
Richard.Ma 发表于 2021-8-16 17:57
UsedRange获取到的区域包括您这边修改了单元格的值,或者其他的属性,样式等,都会被认为是UsedRange,不一 ...

就是只有一个很简单的模板文件。 SetRange[Template].zip (7.73 KB, 下载次数: 1)
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-16 18:15:37
地板
浩淼 发表于 2021-8-16 18:09
就是只有一个很简单的模板文件。

这边帮您确认一下,预计明天给您答复
回复 使用道具 举报
浩淼
注册会员   /  发表于:2021-8-16 18:26:24
5#
Derrick.Jiao 发表于 2021-8-16 18:15
这边帮您确认一下,预计明天给您答复

好的,麻烦了
回复 使用道具 举报
浩淼
注册会员   /  发表于:2021-8-17 10:16:43
6#
Derrick.Jiao 发表于 2021-8-16 18:15
这边帮您确认一下,预计明天给您答复

你好,请教一下Gcexcel中如何只获取有文本内容的区域呢?
回复 使用道具 举报
浩淼
注册会员   /  发表于:2021-8-17 15:55:03
8#
Richard.Ma 发表于 2021-8-17 10:35
您发过来的文件我看了一下,用excel打开确实看不出空白区域有什么修改,但是如上面的回帖所说,任何的属性 ...

好的,那有办法查找有边框线的单元格吗?
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-8-17 17:01:00
9#
本帖最后由 Richard.Ma 于 2021-8-18 09:41 编辑

在你这个只有一个整体的外侧边框的场景下,可以考虑用你说的这种方式。

目前没有直接的办法可以获取到完整的最外侧边框的区域,你可以尝试循环遍历每一个单元格,通过括号中的代码判断,以获取:

1.有上边框的最上侧行
  1. workbook.ActiveSheet.Range[r,c].Borders[ BordersIndex.EdgeTop].LineStyle != BorderLineStyle.None
复制代码
2.有下边框的最下侧行
  1. workbook.ActiveSheet.Range[r,c].Borders[ BordersIndex.EdgeBottom].LineStyle != BorderLineStyle.None
复制代码
3.有左边框的最左侧列
  1. workbook.ActiveSheet.Range[r,c].Borders[ BordersIndex.EdgeLeft].LineStyle != BorderLineStyle.None
复制代码
4.有右边框的最右侧列
  1. workbook.ActiveSheet.Range[r,c].Borders[ BordersIndex.EdgeRight].LineStyle != BorderLineStyle.None
复制代码

回复 使用道具 举报
浩淼
注册会员   /  发表于:2021-8-17 17:40:23
10#
Richard.Ma 发表于 2021-8-17 17:01
这个没有办法,你这边目前的具体的需求是什么,我帮您看看有没有其他的解决途径

我现在想对文件的第一列循环查找,找到模板的最后一行,但是用下面的代码测试的时候,发现文件中的模板是有外侧框线的,但是用代码检测不出来,你可以帮忙看看吗? 学生信封-模板.zip (7.25 KB, 下载次数: 1)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部