Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件大小问题。当poi读写时_Java_Excel_Xls_Apache Poi - Fatal编程技术网

Java 文件大小问题。当poi读写时

Java 文件大小问题。当poi读写时,java,excel,xls,apache-poi,Java,Excel,Xls,Apache Poi,我正在使用ApachePOIAPI来处理我的电子表格文件。 我观察到,如果我们试图编辑一个现有的.xls文件,它的大小与一次性写入同一个文件(相同的数据)的大小不同。Excel电子表格在打开或编辑后增长是正常的。在Microsoft Excel中打开电子表格时,会自动计算公式,因此这会增加文件的大小。如果ApachePOI打开了电子表格,则由开发人员调用()来更新所有值。当ApachePOI读取电子表格且公式尚未计算时,公式答案可能无效 POI将始终为每个单元格写入一条记录 然而,Excel有时

我正在使用ApachePOIAPI来处理我的电子表格文件。
我观察到,如果我们试图编辑一个现有的.xls文件,它的大小与一次性写入同一个文件(相同的数据)的大小不同。

Excel电子表格在打开或编辑后增长是正常的。在Microsoft Excel中打开电子表格时,会自动计算公式,因此这会增加文件的大小。如果ApachePOI打开了电子表格,则由开发人员调用()来更新所有值。当ApachePOI读取电子表格且公式尚未计算时,公式答案可能无效

POI将始终为每个单元格写入一条记录

然而,Excel有时会将几个类似的连续单元格组合成一个记录。例如,如果一行中有3个单元格为空但已设置样式,则excel将生成一个包含所有单元格的单元格。对于一行中包含简单数字的多个单元格,excel使用


当POI读入文件时,它会将所有Mul*记录展开。在写入时,会写入单个单元格记录,因此文件会稍微变大。我认为在POI bugzilla中有一个条目可以让POI将细胞合并到Mul记录中,但似乎还没有人自愿参与这项工作……

也许,你在某种意义上是对的,但我想我还没有弄清楚上下文或其他什么。事实上,困扰我的是,我没有在电子表格中使用任何公式,也没有在文件中写入stings。唯一的区别是,在第一次尝试中创建一个文件(即100条记录),其中在两个或三个会话(即50+50)中创建另一个具有相同100条记录的文件。尽管两个文件有相同的记录(没有任何公式)。然而,它们的大小是不同的。我正在为此使用ApachePOI。
fileName=“POI-test2.xls”;文件=新文件(文件名);FileInputStream fileIn=null;FileOutputStream fileOut=null;HSSF工作簿=空;HSSF工作表=空;如果(file.exists()){fileIn=new FileInputStream(file);workbook=new HSSFWorkbook(fileIn);fileOut=new FileOutputStream(file);}else{workbook=new HSSFWorkbook();worksheet=workbook.createSheet(worksheetName);fileOut=new FileOutputStream(file);}worksheet=workbook.getSheet(worksheetName);int rowNo=工作表.getPhysicalNumberOfRows();系统输出打印项次(rowNo)