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

Apache POI Excel工作簿创建时间长

慕宜民
2023-03-14
Workbook wb = WorkbookFactory.create(inputStream) 
Workbook wb = new XSSFWorkbook(inputStream)

...需要很长时间(~30秒),并且该文件只有72行10列(365KB)。

这不是问题,只是看起来有点过分。我在想我是做错了什么,还是没有做我应该做的事情。实例化具有相同数据(但只有25KB)的xls文件只需1或2秒。如果这是正常的,那么有人可以告诉我。

编辑:

LOG.info("Loading Excel Workbook...");
Workbook workbook;
try {
    workbook = WorkbookFactory.create(dataStream);
} catch (InvalidFormatException e) {
    throw new IOException("Invalid file format ==> " + e.getMessage());
}
LOG.info("Workbook loaded.");

因此,我不知道这是App Engine的问题,还是POI不喜欢FileItemStream返回的InputStream的味道。顺便说一句,我不能用文件而不是inputstream尝试初始化,因为App Engine不允许写入文件系统。

共有1个答案

戚飞虎
2023-03-14

我将使用可用的分析工具之一进行一些分析,例如JVisualVM、Dynatrace、JProfiler、…

只有这样,您才能确切地知道代码中的时间花在了哪里,毕竟可能是某个意想不到的地方,您将在这里追捕错误的马。

即。您可能从其他地方收到InputStream,它实际上可能是通过互联网从某些外部内容下载的,线路可能很慢,因此所有的阅读都需要很长时间。也可能是由于磁盘设置或内存短缺,大量GC正在运行,因为您接近极限,...

 类似资料:
  • 我无法使用 apache poi eclipse 在我创建的 java excel 中创建工作表

  • 我正在尝试使用一个包含多行数据的Excel工作表,并使用行中的一个值作为新工作簿名称为每一行创建单独的工作簿。这些工作簿将保存为逗号分隔的工作簿,以便它们可以上传到机器的控制器中。我可以手动打开一个新工作簿并从基本工作簿中获取单元格的外部引用,但对如何编写循环以使其自动在行中移动并创建新工作簿以及如何使用其中一个值作为新工作簿的名称感到困惑。 基本工作簿的结构是从A到J的行,其中A列包含我要将新工

  • 这里的术语“工作簿”表示Microsoft Excel文件。 完成本章后,您将能够使用Java程序创建新的工作簿并打开现有的工作簿。 创建空白工作簿 以下简单程序用于创建空白Microsoft Excel工作簿。 import java.io.*; import org.apache.poi.xssf.usermodel.*; public class CreateWorkBook { pu

  • 问题内容: 我有几个要转储为excel工作簿(xls / xlsx)中新工作表的csv文件。我该如何实现? Google搜索并找到“ pyXLwriter”,但该项目似乎已停止。当我尝试“ pyXLwriter”时,我想知道是否有其他选择/建议/模块? 非常感谢。 [编辑] 这是我的解决方案:(任何人都有更精简的pythonic解决方案?请发表评论。thx) 问题答案: 不知道 您 所说的“更精简

  • 所以在问这个之前,我搜索并发现了一些与我在这里想要做的相似的事情。 基本上我有工作簿AlphaMaster。这个工作簿是一个模板,我想用它来创建每周的新工作簿。 在本工作簿中,有名为“周一至周六”的工作表,以及带有相应日期的周一、周二等其他工作表。 我创建了一个在打开工作簿时加载的表单。我想要的是当我单击表单运行时,它将: > 将代码保存模板作为新工作簿运行 根据userform1的输入重命名工作

  • 我正在创建用于在HSSF工作簿中写入数据的时间格式样式,但输出采用不同的格式,并附加了一个字符。 但是excel的输出就像 如果有人能帮我事先谢谢