PHPExcel从少量数据生成大型文件
我使用PHPExcel 1.8版打开了一个101k Excel 5电子表格。我更新某些单元格,添加少量数据。当我将电子表格写回一个新文件时,内容看起来是正确的,但大小是3592K 我尝试打开原始电子表格,将更新后的电子表格中的单元格复制到原始表格中,并保存为新名称。结果的大小实际上更小,96k 为什么PHPExcel会使文件变得如此之大,我如何修复这个问题?下面是我的代码PHPExcel从少量数据生成大型文件,php,phpexcel,Php,Phpexcel,我使用PHPExcel 1.8版打开了一个101k Excel 5电子表格。我更新某些单元格,添加少量数据。当我将电子表格写回一个新文件时,内容看起来是正确的,但大小是3592K 我尝试打开原始电子表格,将更新后的电子表格中的单元格复制到原始表格中,并保存为新名称。结果的大小实际上更小,96k 为什么PHPExcel会使文件变得如此之大,我如何修复这个问题?下面是我的代码 $objReader = PHPExcel_IOFactory::createReader( 'Excel5' ); $ob
$objReader = PHPExcel_IOFactory::createReader( 'Excel5' );
$objPHPExcel = $objReader->load( $template_location . $template_file_name );
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue( "B17", $last_name )
->setCellValue( "C17", $first_name )
->setCellValue( "D17", $phone );
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save( $eapis_location . $output_file_name );
答案是因为PHPExcel没有应用MS-Excel本身用于保持文件大小小的任何优化,主要是为了避免性能开销。举几个例子,MS Excel并不存储其所有默认样式,而PHPExcel存储的是一整套默认样式。MS Excel对所有字符串数据使用UTF-8,MS Excel使用配置为使用的任何字符集 解决此问题的唯一方法是编写自己的Excel读写器;或者使用依赖MS Excel本身的COM之类的东西
如果PHPExcel创建的文件格式符合BIFF文件格式,并且MS Excel能够正确读取,那么文件大小的差异真的是一个关键问题吗?是的,大小很重要,因为服务器可能会一次通过电子邮件发送其中几个文件。我试图查看现有编写器的代码,但我不知道如何更改它。你或任何人能向作者推荐一个可能解决问题的mod吗?它是phpexcelv1.8。PHPExcel编写器没有可能修复此问题的mod。如果我可以在不损失任何功能的情况下使文件变小,或者在执行时间上付出任何代价,那么我在几年前就已经这样做了。我建议,如果它是如此关键的任务,那么你使用COM。。。或者将文件集合压缩到单个捆绑包中。或者,如果用户不希望电子表格有任何格式或其他特殊功能,则只需向他们发送CSV文件即可