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

apache poi从非常大的xls复制到新的工作簿工作表

谭彦
2023-03-14

我有非常大的xls文件,其中包含两个表。我想把这两张表合并成一张,复制到新的工作簿上。但是当我尝试访问这个大的xls时,我会出现内存异常,如下所示:

FileInputStream fis = new FileInputStream(new File("input.xls"));
HSSFWorkbook workbook = new HSSFWorkbook(fis);

我尝试使用xls的事件api:http://poi.apache.org/spreadsheet/how-to.html#event_api,但是使用它我们只能读取单元格值。但这里我需要复制到新的excel表。

共有1个答案

南门鸿雪
2023-03-14

Apache POI提供了一个低内存占用的SXSSF API,用于将数据写入XLSX。它不会一次加载内存中的所有内容,因此它是处理非常大的excel文件的解决方案。你可能要考虑一下这个。

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

  • 我使用这段代码将工作簿中的每一张工作表复制到一个新的工作簿中,它工作得很好,但它颠倒了工作表的顺序,是否有任何办法阻止它这样做? 我正在复制所有的工作表,这样我就可以将它保存为不同的文件扩展名,这是我发现唯一有效的方法。

  • 试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误

  • 作为预先警告,我是使用VBA的新手。 我已经拼凑了以下代码来执行以下操作:1。找到工作表“intrastat”2。复制此工作表3的使用范围。作为值粘贴到新工作簿4中。重新格式化B5栏中的日期。将工作簿保存在原始工作簿的位置。 然而,只有当我将宏保存在原始工作簿中时,这才起作用。我需要的是能够有宏保存在一个不同的工作簿和运行宏,我需要能够选择“原始”工作簿从一个文件位置在我的硬盘。 有什么想法吗?

  • 我试图将活动工作表和2个指定工作表复制到一个新工作簿,然后让宏继续在新工作簿上运行,以便在保存它之前更改一些内容 null

  • 我有一段巧妙的代码,它根据指定单元格中的特定文本输入隐藏/隐藏表。在Book1中的Sheet1中(比方说),如果我改变单元格A1中的文本(比方说文本是苹果、橘子等),我会在同一本书中的sheet2上得到某些表格(让我们称之为答题卡)。 现在,在另一本书中,我有一个表,其中包含所有可能的文本值(Apple,oranges,等等)。我想写一个代码,首先通过这个表,使值在book1.sheet1(“sh