学习DsExcel的科学实践之科学验证(四)
DsExcel
admin 发布于:2025-07-18 11:06:25
阅读:loading
DsExcel是一款高速 Java Excel 电子表格 API 库,终极 Java Excel 电子表格 API 库解决方案。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)
高速 Java Excel 电子表格 API 库
(1)创建、加载、编辑和保存 Excel .xlsx 电子表格;
(2)保存至 XLSX,PDF,HTML,CSV,JSON,图片, 和SpreadJS文件;
(3)比 Apache POI 快 2 倍以上,占用内存更少;
(4)不依赖 Microsoft Excel;
(5)包含 JavaScript 数据查看器在客户端上查看数据文档并选择性地与其交互;
Java Excel API 库概述
Java 版 Excel 文档解决方案允许开发人员大规模加载、创建、修改、计算、保存和转换 Excel 电子表格。它支持读写 .XLSX 文件、使用自定义模板创建和共享报告,以及在 8.0 及以上版本的 Java 应用程序中部署电子表格。
终极 Java Excel 电子表格 API 库解决方案
用于无缝电子表格管理的高级 API 功能:这个功能丰富的 API 基于强大的 Excel 对象模型,支持使用 Java 无缝创建、编辑、转换和导出 Excel 文件。它支持企业应用程序的公式、图表、数据透视表、数据验证、样式设置和高性能处理。
使用 Java 中的 .XLSX 模板构建专业的 Excel 报告:使用 Java 定义 Excel 模板,自动快速生成全面的 .xlsx 报表,例如发票、销售报告、收据、运输标签、采购订单等。绑定来自多个数据源的数据,使用图表模板、迷你图和表格创建报表,同时还支持 Microsoft Excel 公式进行快速数据计算和条件格式设置。
跨平台 Java 开发:一次编写,随处运行:凭借对 Windows、Linux 和 macOS 的全面支持,您可以使用单一 Java 代码库创建与 Excel 兼容的电子表格应用程序。Excel 文档解决方案 Java 版可在桌面和 Web 应用中无缝运行,无需依赖 Microsoft Excel。您可以使用 Java 创建、加载、编辑、计算和导出电子表格,并部署到本地或云端,兼容 Azure、AWS 和 AWS Lambda 等平台。
Java Excel API 功能
(1)生成Excel文件;
(2)导入/导出功能;
(3)数据可视化功能;
(4)数据分析;
(5)强大的计算引擎;
(6)单元级特征;
(7)高级功能;
Java操作Excel的库已知(或多或少的接触过)相当多的组件了,有商业的,也有免费的,它们是:Jacob、JXL、JXLS、POI、EasyPOI、EasyExcel、Aspose、Spire.Xls、Qoppa Software等等,今天这款DsExcel也是相当的强大,作为Java操作Excel的实现之一,在酌情了解它的特性后,按需有效选择即可。Apache POI已经够强大了,足够使用,而且开源免费,首选。
@RunWith(JUnit4.class)
public class ExcelMaxCallTest {
@Test
public void test() {
final ExcelCreateTest dao = new ExcelCreateTest();
//授权认证
//dao.before();
for (int i = 1; i <= 105; i++) {
System.out.printf("当前是第 %d 次调用API" , i);
dao.test();
if (i % 5 == 0) {
System.out.println();
}
}
}
}
未科学使用时,API调用次数超过100时会报错,参考如下错误堆栈:
当前是第 1 次调用API当前是第 2 次调用API当前是第 3 次调用API当前是第 4 次调用API当前是第 5 次调用API
当前是第 6 次调用API当前是第 7 次调用API当前是第 8 次调用API当前是第 9 次调用API当前是第 10 次调用API
当前是第 11 次调用API当前是第 12 次调用API当前是第 13 次调用API当前是第 14 次调用API当前是第 15 次调用API
当前是第 16 次调用API当前是第 17 次调用API当前是第 18 次调用API当前是第 19 次调用API当前是第 20 次调用API
当前是第 21 次调用API当前是第 22 次调用API当前是第 23 次调用API当前是第 24 次调用API当前是第 25 次调用API
当前是第 26 次调用API当前是第 27 次调用API当前是第 28 次调用API当前是第 29 次调用API当前是第 30 次调用API
当前是第 31 次调用API当前是第 32 次调用API当前是第 33 次调用API当前是第 34 次调用API当前是第 35 次调用API
当前是第 36 次调用API当前是第 37 次调用API当前是第 38 次调用API当前是第 39 次调用API当前是第 40 次调用API
当前是第 41 次调用API当前是第 42 次调用API当前是第 43 次调用API当前是第 44 次调用API当前是第 45 次调用API
当前是第 46 次调用API当前是第 47 次调用API当前是第 48 次调用API当前是第 49 次调用API当前是第 50 次调用API
当前是第 51 次调用API当前是第 52 次调用API当前是第 53 次调用API当前是第 54 次调用API当前是第 55 次调用API
当前是第 56 次调用API当前是第 57 次调用API当前是第 58 次调用API当前是第 59 次调用API当前是第 60 次调用API
当前是第 61 次调用API当前是第 62 次调用API当前是第 63 次调用API当前是第 64 次调用API当前是第 65 次调用API
当前是第 66 次调用API当前是第 67 次调用API当前是第 68 次调用API当前是第 69 次调用API当前是第 70 次调用API
当前是第 71 次调用API当前是第 72 次调用API当前是第 73 次调用API当前是第 74 次调用API当前是第 75 次调用API
当前是第 76 次调用API当前是第 77 次调用API当前是第 78 次调用API当前是第 79 次调用API当前是第 80 次调用API
当前是第 81 次调用API当前是第 82 次调用API当前是第 83 次调用API当前是第 84 次调用API当前是第 85 次调用API
当前是第 86 次调用API当前是第 87 次调用API当前是第 88 次调用API当前是第 89 次调用API当前是第 90 次调用API
当前是第 91 次调用API当前是第 92 次调用API当前是第 93 次调用API当前是第 94 次调用API当前是第 95 次调用API
当前是第 96 次调用API当前是第 97 次调用API当前是第 98 次调用API当前是第 99 次调用API当前是第 100 次调用API
当前是第 101 次调用API
java.lang.IllegalStateException: Unlicensed version of Document Solutions for Excel, Java Edition. You have exceeded the number of files you can open or save. Contact us.sales@mescius.com to get your 30-day evaluation key to remove limitations.
at com.grapecity.documents.excel.internals.aW.j.a(Unknown Source)
at com.grapecity.documents.excel.internals.aW.k.b(Unknown Source)
at com.grapecity.documents.excel.internals.aW.e.b(Unknown Source)
at com.grapecity.documents.excel.internals.aQ.M.a(Unknown Source)
at com.grapecity.documents.excel.Workbook.a(Unknown Source)
at com.grapecity.documents.excel.Workbook.save(Unknown Source)
at com.grapecity.documents.excel.Workbook.save(Unknown Source)
at com.grapecity.documents.excel.Workbook.save(Unknown Source)
at cn.unrivaled.ExcelCreateTest.test(ExcelCreateTest.java:241)
at cn.unrivaled.ExcelMaxCallTest.test(ExcelMaxCallTest.java:23)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
Caused by: com.grapecity.documents.excel.internals.aW.j$a
... 37 more
3.程序运行超过10小时
public class ExcelRunTimeTest {
@Test
public void test() throws Exception {
Calendar endCalendar = Calendar.getInstance();
endCalendar.add(Calendar.HOUR , 10);
Date endTime = endCalendar.getTime();
System.out.println("到期时间:" + endTime.toLocaleString());
final ExcelCreateTest dao = new ExcelCreateTest();
//授权认证
//dao.before();
//总执行时间超过10小时即可
for (int i = 1; i <= 24 * 3600; i++) {
dao.test();
Calendar calendar = Calendar.getInstance();
System.out.println("执行次数:" + i + "当前时间:" + calendar.getTime().toLocaleString());
Thread.sleep(10 * 1000L);
//可以通过cmd命令来更改日期或者时间,只要日期时间超过程序运行时的10小时,便会出现异常
}
}
}
未科学使用时,API调用间隔超过10小时会报错,参考如下错误堆栈:
到期时间:2025-7-16 9:26:48
执行次数:1当前时间:2025-7-15 23:26:50
执行次数:2当前时间:2025-7-15 23:27:00
【手工cmd更改时间,让当前日期或时间大于此处的到期时间,进行验证】
java.lang.IllegalStateException: Unlicensed version of Document Solutions for Excel, Java Edition. You have exceeded the maximum running time of DsExcel. Contact us.sales@mescius.com to get your 30-day evaluation key to remove limitations.
at com.grapecity.documents.excel.internals.aW.j.a(Unknown Source)
at com.grapecity.documents.excel.internals.aW.k.a(Unknown Source)
at com.grapecity.documents.excel.internals.aW.k.c(Unknown Source)
at com.grapecity.documents.excel.internals.aW.e.c(Unknown Source)
at com.grapecity.documents.excel.Workbook.<init>(Unknown Source)
at cn.unrivaled.ExcelCreateTest.test(ExcelCreateTest.java:33)
at cn.unrivaled.ExcelRunTimeTest.test(ExcelRunTimeTest.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:232)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
Caused by: com.grapecity.documents.excel.internals.aW.j$a
... 34 more
(PDF格式文档)
(HTML格式文档)
(Excel格式文档)
(1)DsExcel是mescius公司出的众多产品中的其中一款Java语言的产品,目前只知道这款Java语言产品,属于商业产品;
(2)关于Jar文件的下载可以直接从Maven中央仓库下载,下载到的Jar文件内有许多class属于加密混淆的;
(3)使用试用版本将会有对应的试用提示信息与版本限制,比如:文档水印、API最大限制调用100次、程序所在的进程限制10小时内访问有效,本系列文章中的实现属于的科学使用,不需额外关注License,又不改动Jar的任何地方,同时又恰好没有各种限制。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权);
(4)官网的产品组件页面给出了大量的示例代码,至于更多的API示例实现,不作为本次学习摸索的重点,如果未科学使用则会有一些限制;
(5)截至目前(2025年7月)最新的版本为8.1.4,科学的实践只验证了与8.1.3这两个版本;
(6)相关示例输出文件下载:《示例输出.zip》;
点赞