【问题标题】:Why when open xls file generated by PHPExcel then click save the size decreases?为什么当打开 PHPExcel 生成的 xls 文件然后单击保存时大小减小?
【发布时间】:2017-09-06 16:07:45
【问题描述】:

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

 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

$objWriter->save($myFile);

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

【问题讨论】:

    标签: php excel phpexcel excel-2003


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢你的回答,有没有办法模仿PHP中打开/保存的效果?
    • 我不知道......如果我要在 PHPExcel 中引入它,那么它将以降低速度和增加内存使用为代价来保存......这已经很慢了,共享字符串表只是 MS Excel 使用的优化示例之一
    • 文件大小对你真的那么重要吗?
    • 我在将 PHPExcel 中生成的文件导入系统时遇到问题。但是系统在我打开/保存后接受文件。我能看到的唯一区别是大小。我将进一步调查,然后发布一个新问题。谢谢
    • 另一方面,它应该只存储不同的字符串。在某些情况下,不这样做会导致错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多