PHPExcel从少量数据生成大型文件

时间:2014-08-12 23:11:17

标签: php phpexcel

我使用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 );

1 个答案:

答案 0 :(得分:0)

答案是因为PHPExcel不应用MS Excel本身适用的任何优化来保持文件大小,主要是为了避免性能开销。作为一些示例,MS Excel不存储其所有默认样式,PHPExcel存储完整的默认样式集。 MS Excel对所有字符串数据使用UTF-8,MS Excel使用配置使用的任何字符集。

你能解决这个问题的唯一方法就是编写自己的Excel读写器;或者使用像COM这样依赖于MS Excel本身的东西。

如果PHPExcel以符合BIFF文件格式的格式创建文件,并且MS Excel可以正确读取它,那么文件大小的差异真的是一个关键问题吗?