我使用PHPExcel 1.8版打开一个101k Excel 5电子表格。我更新了某些单元格,添加了少量数据。当我将电子表格写回新文件时,内容看起来是正确的,但它的大小为3,592k。
我尝试打开原始电子表格,将更新的电子表格中的单元格复制到原始电子表格并保存为新名称。结果大小实际上更小,为96k。
为什么PHPExcel会使文件变得更大,我该如何解决这个问题呢?以下是我的代码。
$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 );
答案 0 :(得分:0)
答案是因为PHPExcel不应用MS Excel本身适用的任何优化来保持文件大小,主要是为了避免性能开销。作为一些示例,MS Excel不存储其所有默认样式,PHPExcel存储完整的默认样式集。 MS Excel对所有字符串数据使用UTF-8,MS Excel使用配置使用的任何字符集。
你能解决这个问题的唯一方法就是编写自己的Excel读写器;或者使用像COM这样依赖于MS Excel本身的东西。
如果PHPExcel以符合BIFF文件格式的格式创建文件,并且MS Excel可以正确读取它,那么文件大小的差异真的是一个关键问题吗?