找回密码
 立即注册

QQ登录

只需一步,快速开始

hsReport
金牌服务用户   /  发表于:2021-9-1 16:16  /   查看:3845  /  回复:8
10金币
本帖最后由 Lynn.Dou 于 2021-9-2 11:29 编辑

通过POI生成的excel,隐藏了KL列,excel中打开正常,效果如图: image.png769630431.png
通过https://demo.grapecity.com.cn/SpreadJS/WebDesigner/在线平台导入excel打开,该列并没有正常隐藏,效果如图: image.png764373473.png
麻烦看下具体什么原因,附件已经上传excel源文件

test_隐藏列.rar

8.58 KB, 下载次数: 701

8 个回复

倒序浏览
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-1 18:30:47
沙发
您好,
问题已复现,已将此问题记录下来,待有进展会在贴中更新。
本贴先做保留处理。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-6 10:52:21
板凳
经调研,poi生成的excel文件,会多出collapsed属性,这属于poi的内部机制,SJS不做兼容性处理。直接由Excel生成的xlsx文件,不会出现此问题。

下方解决方案您可以参考下:
1、用Excel打开该文件
2、按ctrl+A全选
3、选择 数据 选项卡,点击 清除分级显示
4、保存,导入SJS

image.png486872558.png

如果是想从后端解决,
您可以使用SpreadJS的后端配套产品GcExcel,
将excel文件导入GcExcel后,通过下方代码,清除分级显示,然后再次导出excel文件。
此时的excel文件导入SpreadJS后,隐藏列正常。
  1. //创建工作簿
  2. Workbook workbook = new Workbook();
  3. //导入 excel 文件
  4. workbook.open("../import_excel_files/test.xlsx");
  5. //获取sheet
  6. IWorksheet worksheet = workbook.getWorksheets().get(0);
  7. //清除分级显示
  8. worksheet.getRange("A1:Z17").clearOutline();
  9. //导出Excel文件 - 保存时将路径更改为实际导出路径。
  10. workbook.save("../export_excel_files/after.xlsx");
复制代码



回复 使用道具 举报
hsReport
金牌服务用户   /  发表于:2021-9-7 16:33:29
地板
Lynn.Dou 发表于 2021-9-6 10:52
经调研,poi生成的excel文件,会多出collapsed属性,这属于poi的内部机制,SJS不做兼容性处理。直接由Excel ...

openxml协议中是有这个属性的,不是poi专用的,collapsed这个属性如果为true而且是隐藏列就会影响这个功能,这个为false是不影响,这个属性为什么会影响隐藏行列呢?
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-7 17:12:05
5#
关于您的疑问这边需要咨询下研发同事,有结果在本帖回复您。
此问题的处理结果就是如贴中回答所示,建议您参考贴中所示的方案解决。
回复 使用道具 举报
hsReport
金牌服务用户   /  发表于:2021-9-7 17:15:17
6#
Lynn.Dou 发表于 2021-9-7 17:12
关于您的疑问这边需要咨询下研发同事,有结果在本帖回复您。
此问题的处理结果就是如贴中回答所示,建议您 ...

好的,麻烦尽快帮忙确认下,我们也是按照标准openxml协议来的
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-7 17:46:08
7#
好的,有结果会在本帖回复您。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-8 17:26:43
8#
您好,与研发沟通此问题解答如下:openXML 中 collapsed 定义如下:

image.png186651915.png

“collapsed”属性必须和“outlineLevel”属性一起使用才能生效,单独存在是没有意义的。

在您提供的文件中没有找到任何outline columns,
所以collapsed属性在文件中是没有意义的。
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2021-9-10 17:48:21
9#
您好,刚才电话中进行了沟通,这边先简单对沟通做下总结。此问题是由于poi生成的文件多出collapsed属性导致的,
但Excel正常操作不会出现此问题,这是此问题的直接原因。
至于POI为什么会多出collapsed属性,这边也无法定位到原因。
(如果您有一些关于POI此问题的相关资料说明,可以提供给我们,这边可以协助您调研下)

从产品上讲,SpreadJS当初在设计方向上就是对Excel兼容,
即对于Excel生成的文件,SpreadJS能正常导入和显示;对于SpreadJS生成的文件,Excel能正常打开。
对于POI等产品,由于其本身是支持Excel的,正常来说也可以导入显示。
但不得不承认的是Excel的兼容性是比SpreadJS高的,对于一些不太规范的文档也可以导入支持,但SpreadJS在这一块是不如Excel强大的。
并且我们目前无法知道Excel做了哪些支持POI的设计(这部分没有在Excel公开的规范中有描述)。
所以我们也无法贸然去猜测,贸然猜测可能会导致产品出现其他的问题。

对于目前的情况,前面也提到了一些其他的解决方案,您可以参考使用。
如果咱们这边有Excel对POI这块支持的相关文档和设计,也希望您及时的共享给我们,我们会第一时间反馈给我们的开发,以完善我们的产品。

先前电话中您对这边关于openxml协议的回复有疑问,为了更快的解答您的疑惑,请您将自己现存的一些疑问详细说明下,这边我会总结起来进行反馈。
诸如,咱们查询的一些资料,像电话中提到的openxml协议、ecma376等,也可以截图说明下您的想法,
这也有利于我们了解您的情况,从而更快的解答您的疑问。

另外,从之前的电话沟通中,也了解到咱们对openxml协议也有很深入的研究,我们也有一些知识分享的平台,例如用户公开课,这块可以和我们通过公开课进行一个分享,与更多葡萄城客户分享交流一下咱们对于openxml这块的见解。




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