java中使用POI如何更新EXCEL中的一行数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中使用POI如何更新EXCEL中的一行数据?相关的知识,希望对你有一定的参考价值。

问题如上 希望贴出例子

参考技术A 1.InputStream inputStream=new FileInputStream(new File(fileName));
2.HSSFWorkbook book=new HSSFWorkbook(inputStream)
3.取到sheet
4.循环row
5.循环cell ,并update 内容
6.save and close

java poi Excel大数据量导入怎么提高速度

记得有个属性,

POI3.8的SXSSF包是XSSF的一个扩展版本,支持流处理,在生成大数据量的电子表格且堆空间有限时使用。SXSSF通过限制内存中可访问的记录行数来实现其低内存利用,当达到限定值时,新一行数据的加入会引起老一行的数据刷新到硬盘。
比如内存中限制行数为100,当行号到达101时,行号为0的记录刷新到硬盘并从内存中删除,当行号到达102时,行号为1的记录刷新到硬盘,并从内存中删除,以此类推。
rowAccessWindowSize代表指定的内存中缓存记录数,默认为100,此值可以通过
new SXSSFWorkbook(int rowAccessWindowSize)或SXSSFSheet.setRandomAccessWindowSize(int windowSize)来设置。
参考技术A 这个量太大,确实没法子

~~~~~~

最近在利用poi往excel中写入大量数据时,发现excel2003最多只支持65535条,大量数据时容易造成oom,上网查了一下api,发现目前对于2003,每个sheet最多支持65535条,若数据量远超65535,建议分sheet处理,而poi3.8之后,出现了SXSSFWorkbook,可以支持大数据量的写入excel操作,但是目前只支持excel2007

HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现
XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现

从POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API----SXSSF

SXSSF通过一个滑动窗口来限制访问Row的数量从而达到低内存占用的目录,XSSF可以访问所有行。旧的行数据不再出现在滑动窗口中并变得无法访问,与此同时写到磁盘上。
在自动刷新的模式下,可以指定窗口中访问Row的数量,从而在内存中保持一定数量的Row。当达到这一数量时,在窗口中产生新的Row数据,并将低索引的数据从窗口中移动到磁盘中。
或者,滑动窗口的行数可以设定成自动增长的。它可以根据需要周期的根据一次明确的flushRow(int keepRows)调用来进行修改。

以上是关于java中使用POI如何更新EXCEL中的一行数据?的主要内容,如果未能解决你的问题,请参考以下文章

使用POI读取EXCEL中的数据如何获得表中实际数据的行数?

java 关于poi读取excel颜色

java poi Excel大数据量导入怎么提高速度

Java读取Excel中数据时怎么判断Excel中的最后一行

如何使用Java和apache poi选择excel中的所有单元格

java 用poi把excel中的日期导入到数据库中,