簡體   English   中英

PHPExcel從少量數據生成大文件

[英]PHPExcel generating large files from small amounts of data

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

答案是因為PHPExcel並未應用MS Excel本身所做的任何優化來保持文件較小,主要是為了避免性能開銷。 僅舉幾個例子,MS Excel不會存儲其所有默認樣式,PHPExcel會存儲完整的默認樣式集。 MS Excel對所有字符串數據使用UTF-8,MS Excel使用配置為使用的任何字符集。

您可以“修復”此問題的唯一方法是編寫自己的Excel讀取器/寫入器。 或使用依賴於MS Excel本身的COM之類的工具。

如果PHPExcel以符合BIFF文件格式的格式創建文件,並且MS Excel可以正確讀取它,那么文件大小上的差異真的是一個關鍵問題嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM