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

如何使用SXSSF写入现有文件?

沙星波
2023-03-14

我有一个.xlsx文件,其中包含多个包含不同数据的工作表。在所有的工作表中,一个工作表需要容纳接近100,000行数据,并且需要使用带有POI的Java来写入数据。

对于SXSSFWorkbook,这似乎相当快速和简单,在这里我只能在内存中保留100行,但缺点是我只能写入一个新文件(或覆盖现有文件)。

此外,我不允许‘加载’一个现有的文件,即

null

 SXSSFWorkbook wb = new SXSSFWorkbook(file_input_stream) 

null

我可以使用工作簿工厂:

null

Workbook workbook = new SXSSFWorkbook();
workbook = WorkbookFactory.create(file_input_stream);

null

但到了我要清理的时候,

 ((SXSSFSheet)sheet).flushRows(100); 

null

我得到的错误是不允许从XSSFSheet到sxssfsheet的类型转换。

我试着看看是否有任何方法可以在不同的工作簿上复印工作表,但到目前为止,它似乎是一个单元格一个单元格地复印。

对如何处理这个问题有何见解?

共有1个答案

寇甫
2023-03-14

您可能有一个模板,要向其中添加大数据。您需要使用SXSSFWorkbook(XSSFWorkbook)构造函数:

XSSFWorkbook wb = new XSSFWorkbook(new File("template.xlsx"));
SXSSFWorkbook wbss = new SXSSFWorkbook(wb, 100);
Sheet sheet = wbss.createSheet("sheet1");
// now add rows to sheet
 类似资料:
  • 我用SXSSF写了100万条记录(最坏的情况)。 以下是我编码的方式。我必须将记录写入已经存在的excel模板。此模板在类路径中可用。我将此模板复制到公共位置。使用 XSSFWorkBook 加载此文件。SXSSFWorkbook 使用 XSSFWorkBook 和 window size(-1) 作为参数进行初始化。 当记录计数达到100的倍数时,我将冲洗工作表。 但是在执行这个过程中,堆内存逐

  • 本文向大家介绍VBA 使用FileSystemObject写入现有文件,包括了VBA 使用FileSystemObject写入现有文件的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 问题内容: 我如何将分数写入文件? 问题答案: 您可以手动打开和关闭文件,但最好使用它,因为它可以为您处理关闭文件。 表示追加到文件中,该文件不会覆盖以前的内容- 这可能是您想要的。据我所知,您将要在print语句之后或之前添加它。如果您不懂读写文件,则应查看此链接。

  • 问题内容: 我想知道如何将以下代码转换为将这些行输出到文本文件,而不是标准输出: 该属性文件是: 谢谢。 问题答案: 将ConsoleAppender更改为FileAppender。 我发现 有用。如果使用此选项,则必须为fileName添加一个属性,并且可能还要设置maxFileSize。这是一个示例(将它们放在log4j.properties文件中): 还有其他附加程序。 根据时间滚动。 不滚

  • 考虑以下代码: 我唯一发现的是: dump(Object data)方法接受Java对象并生成YAML文档 和 是只有我一个人,还是文档感觉非常神秘和指定?其中一半是关于我甚至从未听说过的特殊应用。我只看着它就觉得自己很傻,这让我有点生气。 不管怎样;如果你能给我任何帮助,我将不胜感激。

  • 问题内容: 我已经编辑了程序,现在它说setString() 对于LabelCell类型,未定义setString(String)方法。 我阅读了文档,在LabelCell类型中有一个setString方法。 问题答案: LabelCell只是具有一种方法的接口,即您可以在此处了解更多信息 您应该改用。 您应该做的确切如下: 您应该导入以下文件 然后下面是将所需位置的单元格添加到excel文件中的