找回密码
 立即注册

QQ登录

只需一步,快速开始

chaoren

初级会员

16

主题

67

帖子

205

积分

初级会员

积分
205
chaoren
初级会员   /  发表于:2019-2-18 17:02  /   查看:2828  /  回复:7
image.png826792297.png 如图,excel导入的时候因为在excel里面出现红框中的那几列,但是这几列实际上是无用的(无引用,无数据,无公式),spreadjs,可以判断这几列是无用,然后删除或者隐藏掉这几列这样子的功能吗

7 个回复

倒序浏览
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 17:26:32
沙发
您好,如果您能够判断Excel中的列数,那直接sheet.setColumnCount()即可,比如在Excel中添加一个end符之类。

如果无法直接判断,那就只能自己写一个循环来算。

实际上SpreadJS在导入时会自动判断Excel的有效范围,无效区域会自动隐藏的,

如果出现了空列,那就说明这几列不是完全空的,这就需要您根据自己的业务逻辑,

遍历这些列的单元格,确认从第几列开始是无效列,再调用setColumnCount设置一下即可。
回复 使用道具 举报
chaoren
初级会员   /  发表于:2019-2-18 17:45:43
板凳
KevinChen 发表于 2019-2-18 17:26
您好,如果您能够判断Excel中的列数,那直接sheet.setColumnCount()即可,比如在Excel中添加一个end符之类 ...

1、那我想问一下你们是以什么依据来判断是否空列呢
2、是否可以判断这个列上面无任何东西,无数据,无引用,无公式,无格式这样的呢
3、是否可以设置复制时候不复制隐藏行列,或者复制过去的时候,行列也是隐藏的
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-18 18:09:18
地板
您好,

1、判断空列是根据Excel中的机制来获取的,没有提供对应的接口,无法直接解决本例问题。
2、可以通过getValue / getFormula / getStyle / getFormatter来判断值 、公式、样式、格式,但无法判断是否有引用,目前还不支持从单元格回溯引用源。
3、请问您是怎样复制的?如果直接从Excel中执行copy一个区域,不会带入隐藏行、列的内容。
回复 使用道具 举报
chaoren
初级会员   /  发表于:2019-2-19 13:38:45
5#
KevinChen 发表于 2019-2-18 18:09
您好,

1、判断空列是根据Excel中的机制来获取的,没有提供对应的接口,无法直接解决本例问题。

从spreadjs复制到excel,或者复制到另外一个spreadjs表格里面,都会把已隐藏的行列给复制出来
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-2-19 16:21:07
6#
您好,从SpreadJS中复制含有隐藏行、列的数据确实会把隐藏区域的数据带入Excel,因为SpreadJS只是隐藏了行、列,而没有改变数据。

我提供一个思路,您可以定义一个SelectionChanged事件,其中可以拿到用户操作的选择区域,在这里可以判断选择区域中包含了隐藏行、列的区域,再用setSelection进行重选即可。

代码示例:

  1. var spread = GC.Spread.Sheets.findControl("ss");

  2. var sheet = spread.getActiveSheet();

  3. sheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) {   
  4.         console.log(info);
  5.         var newSelections = info.newSelections;
  6. });
复制代码
回复 使用道具 举报
chaoren
初级会员   /  发表于:2019-4-18 18:12:40
7#
KevinChen 发表于 2019-2-19 16:21
您好,从SpreadJS中复制含有隐藏行、列的数据确实会把隐藏区域的数据带入Excel,因为SpreadJS只是隐藏了行 ...

setSelection可以设置多个选中区域吗,我看着api好像只能设置一个区域
回复 使用道具 举报
KevinChen讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2019-4-19 10:51:43
8#
您好,setSelection不能一步到位地同时设置多个选区,可以通过多次调用addSelection来实现多区域的选取,参考API:

https://demo.grapecity.com.cn/sp ... t~addSelection.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部