前言

GrapeCity Documents for Excel (以下简称GcExcel)是葡萄城公司的一款服务端表格组件,它提供了一组全面的 API 以编程方式生成 Excel (XLSX) 电子表格文档的功能,支持为多个平台创建、操作、转换和共享与 Microsoft Excel 兼容的电子表格;从而使其成为解决所有电子表格挑战的完美解决方案。

本博客主要介绍了加载 Excel (XLSX) 文件时导入选项的时间性能以及使用导出选项优化的文件大小。测试是在一些 Excel 文档上进行的,这些文档包含真实的函数、公式和多行多列的数据。

测试机配置

  • 操作系统 - Microsoft Windows 10 Professional
  • 版本 - 21H2(OS Version 19044.1645)
  • 系统类型 - x64
  • 处理器 - Intel(R) Core(TM) i7-10850H CPU @ 2.70GHz 2.71 GHz,6 核,12 线程
  • 安装的物理内存 (RAM) - 16.00 GB

测试数据

Excel 文件,其中包含简单和复杂的公式、大量数据记录、多列数据、样式、命名对象等。

Excel 导入

GcExcel 在导入 Excel文档时提供两个选项:

  • DoNotAutoFitAfterOpened
  • DoNotRecalculateAfterOpened

测试代码

String outFilePath = Paths.get("Files", "Output", "GcExcel").toString();
String inputFilePath = Paths.get("Files", "Input").toString();
String fileName = "output.xlsx"; Workbook workbook = new Workbook();
long start = System.currentTimeMillis(); // NO EXPORT OPTION
workbook.open(inputFilePath); // EXPORT OPTIONS
XlsxOpenOptions openOptions = new XlsxOpenOptions();
openOptions.setDoNotAutoFitAfterOpened(true);
openOptions.setDoNotRecalculateAfterOpened(true);
workbook.open(inputFilePath, openOptions); long stop = System.currentTimeMillis();
double openTime = (double) (stop - start) / 1000; workbook.save(Paths.get(outFilePath, fileName).toString());

测试指标

针对上述测试文档(使用和不使用导入选项)计算的加载时间结果如下所示:

Excel 导出

GcExcel 允许使用以下选项控制未使用的样式和命名对象以及没有任何数据的单元格区域的导出:

  • ExcludeUnusedStyles
  • ExcludeUnusedNames
  • ExcludeEmptyRegionCells

这些选项允许您选择是保留还是丢弃导出文档中不需要的项目。因此,它有助于优化保存文件的大小。

测试代码

String outFilePath = Paths.get("Files", "Output", "GcExcel").toString();
String inputFilePath = Paths.get("Files", "Input").toString();
String fileName = "output.xlsx";
Path path = Paths.get(outFilePath, fileName); Workbook workbook = new Workbook();
workbook.open(inputFilePath); // NO EXPORT OPTION
workbook.save(path.toString()); // EXPORT OPTIONS
XlsxSaveOptions saveOptions = new XlsxSaveOptions();
saveOptions.setExcludeUnusedNames(true);
saveOptions.setExcludeUnusedStyles(true);
saveOptions.setExcludeEmptyRegionCells(true);
saveOptions.setIgnoreFormulas(true);
workbook.save(path.toString(), saveOptions); File outputFile = new File(path.toString());
long size = outputFile.length();
BigDecimal sizeInKB = new BigDecimal(size).divide(new BigDecimal(1024));
BigDecimal sizeInMB = sizeInKB.divide(new BigDecimal(1024), 2, BigDecimal.ROUND_HALF_UP);
System.out.println("Size in MB: " + sizeInMB);

测试指标

保存文档后的文件大小。

使用和不使用导出选项保存这些测试文档后的文件大小如下所示:

总结

通过上述的测试结果表明,在使用了GcExcel之后导入不同文件的速度快了接近1秒,同时导出文件的大小也缩小了一半,显著提升了数据处理和文件操作的效率。这使得用户能够更快地处理大量数据并生成更精简、高效的文件输出。以上就是针对不同Excel文件的导入导出测试,如果您想了解更多详细信息,欢迎点击这里查看。

如何增强Java Excel API 的导入和导出性能的更多相关文章

  1. Java中使用poi导入、导出Excel

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  2. jxl(Java Excel API) 使用方法 【2】

    JAVA EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该 API非Win ...

  3. 使用PHPExcel实现Excel文件的导入和导出(模板导出)

    在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度 ...

  4. JAVA Excel API学习案例

    先贴代码吧,执行一下.看看效果,然后看看凝视,再看看代码后面的基础介绍 创建一个新excel并写入数据: public static void myExcel2() throws IOExceptio ...

  5. jxl(Java Excel API) 使用方法 【1】

    //   构建Workbook对象, 只读Workbook对象  //   直接从本地文档创建Workbook  //   从输入流创建Workbook Workbook workbook = nul ...

  6. Java Excel API的使用

    https://wenku.baidu.com/view/724cc9e2dd88d0d232d46a1b.html

  7. poi实现excel数据的导入和导出

    内容来源于网络,侵删. 1.需要的jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactI ...

  8. php操作excel表格的导入和导出

    前言:对于excel大家肯定熟悉不过了的,那么我们在日常的业务中应该是有对这些文件的导入导出操作的 类的下载:composer require phpoffice/phpexcel,其中Classes ...

  9. pl/sql对excel数据的导入和导出

    本来这部分是在上篇pl/sql的,但笔者介于此篇的内容,就独立出来了, 1.导出查询结果到excel文件,在查询结果上右键,然后弹出选择框如下: 2.从excel向数据库中导入数据: a.创建要导入的 ...

  10. vue项目使用js-xlsx进行excel表格的导入和导出方法的简单原型封装

    前提:已经安装好 file-saver xlsx和 script-loader,如未安装,请查看 https://www.cnblogs.com/luyuefeng/p/8031597.html 新建 ...

随机推荐

  1. C++ 多线程笔记1 线程的创建

    C++ 多线程笔记1 线程的创建 里面代码会用到的头文件 #include <iostream> #include <string> #include <memory&g ...

  2. XWAF安装遇到的坑

    存在的问题:需要的编译环境没有安装配置好的话出现下面的问题: 1.error: Microsoft Visual C++ 14.0 or greater is required. Get it wit ...

  3. 【译】32位 .NET Framework 项目的 WinForm 设计器选择

    在客户反馈的推动下,Visual Studio 2022 向64位架构过渡,标志着增强开发体验的关键一步.正如 Klaus Loffelmann 在他的博客文章中所描述的那样,这种转换增强了整体性能和 ...

  4. 【拉格朗日优化dp】P4365 [九省联考 2018] 秘密袭击 coat

    [拉格朗日优化dp]P4365 [九省联考 2018] 秘密袭击 coat 题目简述 求树上所有连通块第 \(k\) 大点权(不足 \(k\) 点记为 \(0\))的和. \(1\leq k\leq ...

  5. Spring整合mybatis使用xml配置事务

    自己准备开始教授Java相关的技术,Spring框架是必须让学生学习的框架之一.里面有一个事务相关的 配置,以前刚学习Spring框架的时候有接触过,只是过了很多年,很多东西都已经淡忘.再来回忆一下 ...

  6. Java自定义注解校验枚举值类型参数

    项目开发中会经常使用到各种枚举值,枚举值一般都是固定的,不会随意改变其中的值. 比如性别分为男女,确定之后一般都不会轻易改变,这时候使用枚举值就非常地方便.很多 时候,在页面中传入的参数就是枚举值中的 ...

  7. inner join on 1=1 在查询中的高级用法

    最近在项目中看到一个查询语句,让我有兴趣去研究.研究.查询语句如下: 重点分析第二个INNER JOIN  ON 1 = 1 这个语句:内连接表示查询两个表的交集,而且ON的条件为 1=1 就表示连接 ...

  8. xp 下对 pdfjs-dist 库的支持 49的chrome xp壳

    公司下壳的版本非常低,不支持es6 chromium Version = 49.0.2623.87 早先是 require('pdfjs-dist'),但是这里面都是es6的代码,xp下直接就崩溃了, ...

  9. 写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索。这样就能配合wox进行单词的搜索了。

    写了一个 dict.cn 的油猴脚本,目的是通过url进行搜索.这样就能配合wox进行单词的搜索了. // ==UserScript== // @name dict.cn // @namespace ...

  10. 使用Deployment和Service实现简单的灰度发布

    在Kubernetes中,使用单个Service和多个Deployment来实现灰度发布的一种常见方法是利用标签(Labels)和选择器(Selectors)来控制哪些Pods接收来自Service的 ...