当前位置: 首页 > 知识库问答 >
问题:

Apache POI生成8kb的小工作簿需要几分钟才能完成

周楷
2023-03-14

我正在使用Apache POI创建xlsx工作簿。创建一个3列350行的小工作簿需要15分钟。我开始删减代码(删除表格格式等)

Workbook wb = new XSSFWorkbook();

关于我可能做错了什么,或者是什么导致了后台的巨大延迟,有什么提示吗?

编辑:更多上下文

System.out.println("Generating Excel file...");

System.out.println("  Creating workbook...");
Workbook wb = new XSSFWorkbook();
System.out.println("  Creating sheet...");
XSSFSheet sheet = (XSSFSheet) wb.createSheet("DS Datasources");
System.out.println("  Setting auto-filter...");
sheet.setAutoFilter(CellRangeAddress.valueOf("A1:C1"));

在控制台中,我看到“创建工作簿......”,然后我必须等待几分钟才能看到“创建工作表......”(也需要一分钟以上)。这意味着一行代码占用了所有时间,对吗?

共有1个答案

轩辕经国
2023-03-14

我发现,在某些情况下,当项目中的jar文件在不同的java级别下编译时(例如java 1.8项目中的java 1.5 jar),JIT编译器会举手并以纯解释模式运行。我的决定是从受影响的JAR的源代码中删除并从源代码中构建。

 类似资料:
  • 此代码用于生成excel报告。有15列,如果记录数在1000左右,生成excel表需要近10-15分钟。上面的代码有什么问题吗?如何提高性能(Excel报告生成时间减少)?

  • 问题内容: 更新: 只是在更明显的地方提到它。当我将IN更改为=时,查询执行时间从180缩短为0.00008秒。速度差可笑。 此SQL查询需要180秒才能完成!那怎么可能?有没有一种方法可以优化它更快? 每个表中只有大约5000行,因此它应该不会太慢。 问题答案: (发布我的评论作为答案,显然确实有所作为!) 如果将更改为, 有什么区别? 如果有人想进一步调查,我刚刚进行了测试,发现它很容易复制。

  • 问题内容: 我知道元素上的设置用于使其居中(左右)。但是,我知道该元素及其父元素必须满足某些条件才能使用自动边距,而且我似乎永远无法正确理解魔术。 所以我的问题很简单:为了使孩子左右居中,必须在元素及其父元素上设置哪些CSS属性? 问题答案: 从我的头顶上: 所述元件必须是块级,例如或 元素不能浮动 元素不得具有固定或绝对位置1 超越别人的头: 元素必须具有不为2的 请注意, 所有 这些条件都必须

  • 我有两个演员。每个参与者都位于不同的ActorSystem中。第一个缓存第二个ActorRef。第一个演员: 并向第二个参与者发送消息,第二个参与者使用 问题:从第一个演员到第二个演员的最初讲述()有时需要1-3分钟(!)传递信息。 除了这个消息之外,没有其他消息在Akka中发送,这意味着邮箱是空的-系统正在为单个请求提供服务。 系统详情: 该应用程序有500个计划的参与者,他们每30秒(阻塞)轮

  • 请在下面找到代码片段 当我们创建excel文件时,这意味着我们正在创建工作簿。从那里,我们访问表格,然后是行和列。 我不明白为什么我们写写当我们已经有一个'Workbook'我们应该有一些方法来获取我们已经创建的工作簿,就像我们为行(getRow),工作表(getSheet),细胞(getcell)所做的那样。 你能帮我理解POI吗?

  • 我似乎无法让这段代码发挥作用。我所做的是用2位数字的所有可能组合填充一个数组(每个数字分别代表一个形状和颜色)。然后,我尝试使用这个数组来填充一个2d数组,在其中我创建了前一个数组中包含的元素的所有可能的组合。出于某种原因,我的2d数组中填充了所有的“21”,而不是任何类型的组合。 如果需要的话,我可以把剩下的代码放在类中,但是它太长了。这个方法中的最后一个循环只是用来打印它们以供测试,之后会被删