V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
GrapeCityChina
V2EX  ›  推广

GcExcel:比 Apache POI 速度更快、性能更高

  •  
  •   GrapeCityChina · 2020-06-02 13:34:46 +08:00 · 6338 次点击
    这是一个创建于 1395 天前的主题,其中的信息可能已经有所发展或是发生改变。

    GrapeCity Documents for Excel ( GcExcel ) 是一款服务端 Java Excel 组件,产品架构轻量灵活,无需 第三方组件依赖,结合 纯前端表格控件 SpreadJS,在前端呈现 Excel 的数据可视化效果,实现类 Excel 的功能布局、数据分析和交互;在服务端实现批量创建、加载、编辑、导入 /导出大型 Excel 文档,为您的应用程序提供 Excel 全栈、全场景解决方案

    image.png

    GcExcel 对操作系统的支持

    image.png

    GcExcel 对云服务的支持

    image.png

    GcExcel +SpreadJS 实现 Excel 全栈解决方案

    与 Java 电子表格库 Apache POI 相比,GcExcel速度更快、性能更高、内存消耗更少。本文将详细比较 Apache POI 与GcExcel的功能和性能,并向您推荐使用 GcExcel 的 12 条主要原因**。**

    主要功能对比

    1. 公式数量

    GcExcel 支持 452 种 Excel 计算公式,而在 Apache POI 中,支持的公式数量仅有 157 - 280 种。

    2. 导出 PDF

    GcExcel 支持导出 PDF 格式,包括页面设置选项、PDF 安全选项和文档属性, 而 Apache POI 不支持导出 PDF 。

    3. 条件格式

    GcExcel 内置了更多条件格式规则,如自定义图标集、高于平均值( AboveAverage )、发生日期、Top 10 和重复项,且这些条件格式与 VSTO 一致。而 Apache POI 不支持条件格式,需要使用标记为内部用途的低级类。

    4. 图表类型

    GcExcel 的图表与 VSTO 一致,内置约 53 种图表类型,包括所有较新的图表,如箱形图( boxshicker )、漏斗图( Funnel )、直方图( Histogram )、帕累托图( Pareto )、旭日图( Sunburst )和树图( Treemap ),而 Apache POI 仅对条形图、柱形图、折线图、雷达图和散点图提供有限的支持。

    5. 迷你图

    GcExcel 支持迷你图和迷你图组,可在单元格中可视化数据,而 Apache POI 不支持迷你图。

    6. 剪切、复制、粘贴图片和形状

    GcExcel 支持对形状和图片进行剪切、复制和粘贴,而 Apache POI 不支持对形状或图片执行剪贴板操作。

    7. 数据过滤

    GcExcel 支持应用高级过滤器,可对数字、文本、颜色、图标执行过滤,而 Apache POI 仅提供基本过滤。

    8. 排序

    GcExcel 支持所有类型的行、列、值、多值、自定义、字体、颜色和图标排序,而 Apache POI 没有内置的排序支持。

    9. 切片器

    GcExcel 支持带有表和透视表的切片器,提供内置切片器样式和自定义切片器样式,还提供了剪切、复制、筛选等操作,而 Apache POI 不支持切片器。

    10. 导入导出 CSV

    GcExcel 支持轻松地导入和导出 CSV,而 Apache POI 则不支持。

    image.png

    详细功能对比表

    性能对比

    我们通过一个测试项目,分别对比了 GcExcel 、Apache POI 和第三方组件的性能,结果如下所示:

    1. 获取和保存 100,000 * 30 个单元格的 double / string / date 值,GcExcel 用时不超过 0.2S ; Apache POI 为 18.7S 左右。

    2. 计算和保存 20,000 * 30 个单元格的公式,结果为:GcExcel 用时不超过 1S ; Apache POI 为 10S 左右。

    3. 打开并保存一个 20.5MB 的 Excel 文件,该文件包含了大量数据、公式和单元格格式,结果如下:

    • GcExcel 用时不超过 4.9S ; Apache POI 则超过 10S
    • GcExcel 内存消耗为 72.1MB ; Apache POI 为 3518.2MB image.png

    性能对比数据

    测试机配置

    • Linux:Intel i7-8700 @ 3.2 GHz x 12 32GB RAM / Ubuntu 18.04.4
    • MacOS:Intel i5 @ 2.6 GHz / MacOS Mojave v10.14.6
    • Windows:Intel i7-6600U @ 2.60 GHz 2.81 GHz 16GB RAM / Windows 10 x64 v1803 (内部版本 17134.1304 )

    测试版本

    • GrapeCity Documents for Excel 版本:3.1.0
    • Apache poi 版本:4.1.1

    测试脚本

    • 从 GitHub 下载测试项目
    • 执行命令行( Mac ): ./gradlew run --args="double" //参数可以是 double, string, date, formula, bigfile
    • 执行命令行( Windows ):gradlew run --args="double" //参数可以是 double, string, date, formula, bigfile

    推荐您使用 GcExcel 的 12 条主要原因

    1. 速度快、性能高

    GCExcel 的平均速度是 Apache POI 的 7 倍,占用的内存仅为 1/7

    2. VSTO 一致的条件格式

    包括图标集、高于平均值、发生日期、顶部 /底部和重复 /唯一值

    3. ** 剪切、复制、粘贴图片和形状**

    支持对图片或形状执行剪切、复制、粘贴等剪贴板操作

    4. 支持数据切片器

    内置切片器样式,可执行剪切、复制和筛选,支持自定义选项

    5. 支持 452 种 Excel 公式

    内置种类丰富的计算函数,支持自定义公式

    6. 支持 53 种图表类型

    包括所有较新的图表,如箱形图、漏斗图、直方图、帕累托图等

    7. 支持应用高级过滤器

    包括对数字、文本、颜色、图标执行过滤

    8. 导入和导出 CSV

    GcExcel 支持导入和导出 CSV

    9. 支持导出到 PDF

    导出包括页面设置选项、安全选项和文档属性

    10. 支持迷你图

    GCExcel 支持迷你图和迷你图组,可在单元格中可视化数据

    11. 多种排序支持

    可按值、多值、字体颜色和图标排序,支持自定义排序

    12. 支持渐变填充

    对于使单元格、形状和图表系列“突出”时非常有用

    通过上述数据,可见 GcExcel 在处理大型 Excel 文档和复杂的计算公式时,比Apache POI和其他同类产品的速度更快,占用的内存也更少,与此同时,使用 GcExcel,您还可以通过 Java 、c# 代码完全控制电子表格,在不需要第三方组件依赖的情况下,实现应用程序的组件化替代与云端架构升级。

    如果您需要了解更多 GcExcel 的功能特性,以及如何与 SpreadJS 配合使用,实现 Excel 全栈、全场景解决方案,请前往 GrapeCity Documents 产品官网。

    18 条回复    2020-06-09 13:33:37 +08:00
    GM
        1
    GM  
       2020-06-03 09:47:00 +08:00
    免费的 Apache POI 他不香吗?
    dangge
        2
    dangge  
       2020-06-03 09:57:44 +08:00   ❤️ 5
    huntcool001
        3
    huntcool001  
       2020-06-03 09:58:29 +08:00
    相比阿里的 EasyExcel 呢?
    breezeFP
        4
    breezeFP  
       2020-06-03 10:08:15 +08:00
    用不起,告辞
    lyog
        5
    lyog  
       2020-06-03 11:08:51 +08:00   ❤️ 8
    用 POI 不是因为它好用,也不是因为它性能高,而是因为它不花钱
    jakes
        6
    jakes  
       2020-06-03 11:29:58 +08:00 via iPhone
    东西是好东西
    wtks1
        7
    wtks1  
       2020-06-03 12:47:33 +08:00 via Android
    个人写的小东西是真用不起这个
    lower
        8
    lower  
       2020-06-03 18:29:28 +08:00
    作为一个码农,我肯定不会首选,要花钱买是一部分,其次我花大把精力了解了它的用法 api,换个项目 /换个工作这玩意就没直接价值了
    dark3212
        9
    dark3212  
       2020-06-04 09:05:15 +08:00
    @dangge 你这图不错,可下一秒它是我的了。
    mmrx
        10
    mmrx  
       2020-06-04 09:45:06 +08:00
    @dangge 图很 fine,下秒 mine
    weizhen199
        11
    weizhen199  
       2020-06-04 12:44:49 +08:00 via Android
    以前还在写 c#的时候就有些付费 office 组件很强大很好用,和后来 java 里的 poi 差距明显。感觉像是 c 艹的胶水
    xwbz2018
        12
    xwbz2018  
       2020-06-04 16:04:24 +08:00
    看起来优化的不错,精神支持一下
    beyondex
        13
    beyondex  
       2020-06-05 12:51:32 +08:00 via Android
    支持一下,大项目有需求的可以买
    li24361
        14
    li24361  
       2020-06-09 08:48:45 +08:00
    easyExcel
    rokoko
        15
    rokoko  
       2020-06-09 09:11:11 +08:00 via Android
    @livid,限制一下置頂吧,隔幾天就看到這個玩意,有時候不登錄帳號,又不能 block,看了煩
    Livid
        16
    Livid  
    MOD
       2020-06-09 09:13:23 +08:00 via iPhone
    @rokoko

    1. 首页上至多会出现 2 个置顶帖。
    2. V2EX 支持按照节点、用户、主题进行屏蔽。
    CloudnuY
        17
    CloudnuY  
       2020-06-09 10:04:34 +08:00
    可惜不支持 Word PowerPoint
    GrapeCityChina
        18
    GrapeCityChina  
    OP
       2020-06-09 13:33:37 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1198 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:13 · PVG 02:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.