为什么打开PHPExcel生成的xls文件,然后单击“保存”时大小会减小?

为什么打开PHPExcel生成的xls文件,然后单击“保存”时大小会减小?,php,excel,phpexcel,excel-2003,Php,Excel,Phpexcel,Excel 2003,我使用PHPexcel_1.8生成Microsoft Excel 97-2003工作表(.xls) 如果我打开文件并按ctr+s(不做任何更改),大小几乎会下降到50%。简单。。。。PHPExcel不会在速度和内存使用方面浪费宝贵的PHP开销资源,以优化文件数据的存储;而MS Excel将通过优化存储来减少文件大小要求。在PHP中构建本机Excel格式文件的速度很慢,而且已经占用了大量内存 例如,所有字符串数据都保存在共享字符串表中。当两个或多个单元格包含相同的字符串值时,MS Excel会将它

我使用PHPexcel_1.8生成Microsoft Excel 97-2003工作表(.xls)


如果我打开文件并按ctr+s(不做任何更改),大小几乎会下降到50%。

简单。。。。PHPExcel不会在速度和内存使用方面浪费宝贵的PHP开销资源,以优化文件数据的存储;而MS Excel将通过优化存储来减少文件大小要求。在PHP中构建本机Excel格式文件的速度很慢,而且已经占用了大量内存

例如,所有字符串数据都保存在共享字符串表中。当两个或多个单元格包含相同的字符串值时,MS Excel会将它们都指向共享字符串表中的同一条目,这样字符串数据只存储一次。PHPExcel不会执行此检查以查看共享字符串表中是否已存在字符串值,而是简单地创建一个新条目,因此该字符串将存储两次。这减少了保存数据所需的时间,因为它消除了检查表中已存在的字符串的开销,但会导致重复和文件大小的损失

关键问题是“哪一个更重要?能够在PHP中读取/编辑/写入本机Excel文件?保持PHPExcel尽可能快和低的内存?
或者在磁盘上使用尽可能小的文件大小?”

谢谢您的回答,有没有办法模仿PHP中打开/保存的效果?我不知道。。。。。如果我要在PHPExcel中引入它,那么它将以较慢的速度和增加的内存使用量为代价来实现节约。。。。这已经很慢了,共享字符串表只是MS Excel使用的优化的一个例子。文件大小对您来说真的那么重要吗?我有一个问题,需要将PHPExcel中生成的文件导入到系统中。但系统在我打开/保存后接受该文件。我能看到的唯一区别就是尺寸。我将进一步调查,然后发布一个新问题。另一方面,它应该只存储不同的字符串。有些情况下,不这样做会导致错误。
 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

$objWriter->save($myFile);