xcymoo 发表于 2022-11-7 15:54:31

【GcExcel V6.0 新特性预览】导出Excel的文件体积优化

本帖最后由 xcymoo 于 2022-11-7 15:54 编辑

背景:
不知道大家有没有遇到过这样的情况,很多Excel虽然看起来没有什么内容,但是文件体积却很大,其实这都是由于Excel中包含了很多自定义的样式、名称等原因造成的,于是部分用户便提出了优化导出的Excel文件大小的需求。
那么在GCExcel V6版本中,将在导出时提供几个选项,在导出时可以配置忽略未使用的样式、名称以及空单元格,在导出时,将参数传入Workbook.save方法的第二个参数即可:


1. 排除未使用的样式
在Excel中可以设置一些自定义的样式,我们在GC Excel中也可以设置自定义样式并导出,接下来我们来测试一下忽略未使用样式的效果,我们添加两个自定义样式,其中样式背景色为黄色的未被使用,而蓝色的则被使用:

我们分别查看配置了“排除未使用样式”前后,导出的excel文件的区别:
可以看到,未配置“排除未使用样式“的excel,黄色和蓝色背景的自定义样式都被保留了

而配置了“排除未使用样式”的excel,则只有被使用的蓝色样式被保留了



2. 排除未使用的名称
这里与未使用样式是类似的,只不过未使用的名称包含的范围更广:有自定义的函数、区域的维度,也有工作簿、工作表的维度,比方说可以将一个区域命名为Area1,此Area1可以只在Sheet1起作用,也可以在整个工作簿起作用。函数也是类似的。
下面我们通过代码,定义一些区域、函数,其中命名带1的,不在工作表中使用,命名带2的,则在工作表中使用。

然后我们同样查看配置了忽略未使用名称前后,导出的excel文件的区别:
可以看到,未配置“排除未使用的名称”的excel里,保留了所有的区域名、自定义函数

而配置了“排除未使用的名称”的excel,则只保留了已经使用的区域名、自定义函数:


3. 排除空的区域
我们将A1的值设置为“Hello”,而B2仅被设置背景色为绿色,C3则设置等于D4,最后将D4背景色设置为黄色。

下面,我们对比一下设置了“排除空的区域”前后,导出的excel有什么不同:
下面是未设置“排除空的区域”直接导出的excel,可以看到excel所有样式都和代码里设置的一样:

而设置了“排除空的区域”导出的excel,则和预期有所差距:D4的内容是空的,被删除了,这个是在预期之内,而B2则没有被删除,这是为什么呢?

我们不妨改变一下代码,在E5里也设置一个值:

可以看到,这次即使配置了“排除空区域”的excel,B2和D4都没有被清除:

原因是这样的,既然要排除空区域,那么空区域的定义就非常重要。所谓的空区域,其实是指工作表右下方最后一个有值的单元格以外的区域,理解了什么是空区域,那么如何排除便很好理解了,在第一个例子里,右下方最后一个有值的区域是C3,所以B2并不在排除之列,这就B2未被排除的原因,D4则因为在C3之外而被被排除了。


以上就是GcExcel V6版本关于导出Excel文件体积优化的全部内容了~

页: [1]
查看完整版本: 【GcExcel V6.0 新特性预览】导出Excel的文件体积优化