找回密码
 立即注册

QQ登录

只需一步,快速开始

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证

超级版主

200

主题

9899

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
15531

讲师达人悬赏达人微信认证勋章SpreadJS 认证SpreadJS 高级认证元老葡萄

Clark.Pan 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2022-10-29 22:50  /   查看:1196  /  回复:0
本帖最后由 Clark.Pan 于 2022-10-29 22:59 编辑

背景:

打开一个Excel文件,在默认没有调整过列宽的情况下,该Excel文件的xml语法结构不会记录对应列的宽度。如下图所示:
image.png259554442.png
A,B,C三列中,A,B两列没有调整过列宽。C列手动调整过列宽。导出Excel后,在Excel生成的xml结构中只记录了C列的列宽,并没有记录A,B两列的列宽。
基于此情况,原本GcExcel在打开此类Excel文件的时候。A,B两列会使用autoFit进行自适应列宽的计算。
又因为在GcExcel中,autoFit操作会对该列中每行的单元格自适应宽度进行比较,取其最大的为该列的自适应宽度。这个操作本身会占用一定的性能。占用的性能会随着行增多而变多。极限情况下会消耗很多性能。

所以,在GcExcel V6中提供了 DoNotAutoFitAfterOpened 功能用于在导入Excel不进行自适应的操作。这样在一些特殊情况下可以大量的优化导入的性能。
该功能设置在 XlsxOpenOptions 类中,该类中提供对应的set/get方法用于获取和设置导入后是否自动自适应的功能。

  1. XlsmOpenOptions openOptions = new XlsmOpenOptions();
  2. //获取当前DoNotAutofitAfterOpened当前设置
  3. openOptions.getDoNotAutofitAfterOpened();
  4. //设置DoNotAutofitAfterOpened
  5. openOptions.setDoNotAutofitAfterOpened(true);
复制代码

该接口平时也可以作为一个性能优化的技巧点,供用户灵活配置。

并且该接口不会对导出的Excel结果造成影响。因为Excel会对没有列宽的单元格自动处理。

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部