- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我能够使用 XSSF 读取现有的 xlsm,并使用 SXSSF 将数据写入工作表。最后使用 Outputstream 将其输出为另一个 xlsm。
SXSSF在文档中提到用于编写xlsx
读取和写入大数据的 xlsm 是否是正确的方法,或者如果通过此解决方案完成,文件将被损坏?
这是有效的示例代码,
public static void main(String[] args) throws Throwable {
OPCPackage pkg = OPCPackage.open(new File("sample.xlsm"));
XSSFWorkbook wb_template;
wb_template = new XSSFWorkbook(
pkg
);
System.out.println("package loaded");
SXSSFWorkbook wb = new SXSSFWorkbook(wb_template);
wb.setCompressTempFiles(true);
SXSSFSheet sh = (SXSSFSheet) wb.createSheet();
sh.setRandomAccessWindowSize(100);// keep 100 rows in memory, exceeding rows will be flushed to disk
for(int rownum = 4; rownum < 5000; rownum++){
Row row = sh.createRow(rownum);
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
String address = new CellReference(cell).formatAsString();
cell.setCellValue(address);
}
}
FileOutputStream out = new FileOutputStream(new File("C:\\ouput\\new_file.xlsm"));
wb.write(out);
out.close(); }
最佳答案
我看不出您当前的代码有什么问题,但是在 apache website 上它说 SXSSF 会在您的计算机上留下临时文件,您必须按如下方式调用处置:
Note that SXSSF allocates temporary files that you must always clean up explicitly, by calling the dispose method.
SXSSFWorkbook wb = new SXSSFWorkbook(100);
// dispose of temporary files backing this workbook on disk
wb.dispose();
我建议执行处置,因为它似乎可以防止存储剩余信息。关于这是否是正确的方法,我建议拿一个测试文件并进行几次,这段代码的执行情况将受到您的系统(cpu 功率、内存等)和您的文件大小的影响处理。
祝你好运!
关于java - 使用 SXSSF (POI) 读取模板 xlsm 并将大数据写入现有工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19535436/
根据SXSSF (Streaming Usermodel API) documentation : SXSSF (package: org.apache.poi.xssf.streaming) is
我有一个 .xlsx 文件,其中包含包含不同数据的多个工作表。在所有的Sheet中,一张需要容纳近10万行数据,而且数据需要用Java和poi编写。 这对于 SXSSFWorkbook 来说似乎非常快
我正在尝试在流式工作簿 (SXSSFWorkbook) 中创建 Excel 表。 API 不直接支持它,但我通过访问底层 XSSFWorkbook (workbook.getXSSFWorkbook)
我正在尝试使用 SXSSF 读取 xls 文件。我读过 SXSSF,但不明白如何使用它。所以我遇到了一些问题。 任何人都可以帮助我读取大型 xls 文件(大约 100,000 行和 7-8 页)的 j
问题 在 SXSSF 工作簿中: 如何设置字体? 如何将细胞类型设置为日期? 上下文 我需要编写一个包含大量行和列(400.000 行,每行 50 个字段)的 excel .xlsx 文件,所以我使用
我正在使用 SXSSF 编写 100 万条(最坏情况)记录。 以下是我编码的方式。 我必须将记录写入已经存在的 Excel 模板。这个 模板是 在类路径中可用。我将把这个模板复制到一个普通的 地点。使
在我的项目中,我使用 SXSSFWorkbook (Apache-POI 3.9) 类来管理大型电子表格。现在我需要评估某些单元格的公式,所以我尝试使用像这样的 FormulaEvaluator ..
我的表中有 500 行。当我使用 setRandomAccessWindowSize(1000) 时,它工作正常。数据已从结果集中成功导出到 Excel 文件中,但是当我使用 setRandomAcc
我正在使用 Apache POI 库将大量数据导入 Excel 文件。我不能使用 HSSF 模型,因为它需要太多内存并且 Java 会抛出内存堆异常。我发现的方法是 SXSSF 工作簿模型,它将每 N
我有一个问题。我是对的,如果我有一个通过 xssf 构造函数创建的工作簿,那么将构造函数更改为 sxssf 工作簿就足够了(使用 xssf wb 作为参数传递)以使其在 流模式 下工作?非常感谢您的回
我正在尝试编写一个巨大的 excel 文件,我的要求允许我写下行然后忘记,所以我正在使用 SXSSF这只允许在内存中保留少数行,其余的都写入文档。这有助于克服大文件的内存不足异常。 但我还需要使用 s
我需要读取大型 excel 文件并将其数据导入我的应用程序。 由于 POI 占用大量堆工作,经常抛出 OutOfMemory 错误,我发现有一个 Streaming API 用于串行处理 excel
我想将 SXSSF 转换器与 JXLS 一起使用。我试图以这样一种方式编写我的模板,即我不会得到“试图在已经写入磁盘的范围内写入一行”异常。该模板捕获已知列(例如“HEADER 0”)和未知列(以“_
使用 POI 时 XSSFWorkbook ,单元格(通过生成的 xlsx 文件内的 sharedStrings.xml)会自动保留空白,即 sharedStrings.xml 中的条目看起来像
我有一个包含宏 (.xlsm) 的 Excel 模板,我想读入它,向其中添加一百万行并将其写出。 我知道使用包含宏的 POI 读取和重写文件将保留宏。我需要使用 SXSSF(内存限制)写出 Excel
我能够使用 XSSF 读取现有的 xlsm,并使用 SXSSF 将数据写入工作表。最后使用 Outputstream 将其输出为另一个 xlsm。 SXSSF在文档中提到用于编写xlsx 读取和写入大
我正在使用 POI () 的流式工作表编写一个大型 Excel 工作表(超过一百万条记录),但出现 java.lang.OutOfMemoryError: Java heap space。这是我的代码
正在尝试使用 apache POI 3.17 在应用程序上实现 excel 导出功能。 在我的本地 tomcat 服务器和 Windows 开发环境中,一切都运行良好。但是,SXSSFWorkbook
我在使用 SXSSF poi api 生成有效的 xlsx 文件时遇到问题。如果我使用以下代码,则会生成正确的 Excel 文件:工作簿 wb = new XSSFWorkbook();但如果我使用失
我有一个包含 400,000 行的大型 .xlsx Excel 工作表。我想在这个现有的工作簿中阅读和写作。 当我尝试使用 Apache poi 在 java 中读取它时,代码如下: FileInpu
我是一名优秀的程序员,十分优秀!