php - 为什么当打开 PHPExcel 生成的 xls 文件然后单击保存时大小减小?

标签 php excel phpexcel excel-2003

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

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

$objWriter->save($myFile);

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

最佳答案

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

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

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

关于php - 为什么当打开 PHPExcel 生成的 xls 文件然后单击保存时大小减小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46079856/

相关文章:

PHPExcel - 列的复制范围

php - 如何验证PHPExcel生成的 ".xls"文件中的密码?

php - 如何将id保存在数据库中,但在页面上显示用户名

java - 通过 Excel 与 Python/Java/其他编程语言访问 Bloomberg 的 API

php - Phalcon:如何使用 Phalcon\Debug,但控制开发/生产环境的输出?

excel - 将单元格背景颜色设置为其包含的 RGB 值。如何?

excel - 在列中查找匹配项并从外部文件替换

phpexcel 删除 2 个单元格之间的中间边界线?

php - 为什么我的 header ("Location: $_SERVER[' HTTP_REFERER']"); PHP 函数不起作用?

php - 将 jQuery setInterval 计时转换为递归 setTimeout 计时