close
最近因為工作上的需要每天必須以人工整合大量的CSV文件,由於這些routine的工作十分的繁複無聊,所以就找了一下看看在PHP有沒有辦法操作EXCEL的方法(人家就是習慣寫PHP嘛....),目前常見與Excel相關的問題主要有兩種,一種是如何透過PHP產生excel檔案,另一種是除了產生之外還要能夠進一步操作檔案,下面是網路上常見的解決方式:
- 1.產生Excel檔案:利用tab分隔將資料轉為xls格式輸出
- 直接建立excel檔案
- 輸出給Browser下載
- 2.操作EXCEL 由於第一種方法太過陽春,僅能一次寫入一個xls檔案且無法針對xls做任何的修改,更別說是操作其他的Worksheets,所以我們可以透過PEAR這個外掛元件或者使用COM物件來幫助我們操作Excel檔案,這類方法的功能比較齊全,可以對現有的Excel檔案做許多的操作,PEAR的缺點是要另外安裝PEAR套件才能利用PHP對Excel文件進行操作,也因為如此所以我都是用COM物件來操作Excel,使用COM物件時只要知道Excel的Object Model就可以進行操作,一個簡單操作的範例如下:
- 3.xml格式及其他: 當然現在的Office也支援xml格式的檔案,因此我們也可以使用xml格式來儲存我們的資料或者是使用PHP Excel Reader來讀取現有的xsl檔案
這個方法是目前PHP的程式中最為常見的方法,主要是將資料讀出後,利用標準的I/O輸出成以Tab分隔的格式,接著看是要存成檔案或者是要轉成html header讓使用者下載。
<?$fp = fopen("excel.xls", "w"); $content.="Col4 \tCol5 \tCol6\n"; fputs($fp, $content ); fclose($fp); ?> |
<?header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=excel.xls"); $content="Col1 \tCol2 \tCol3\n"; $content.="Col4 \tCol5 \tCol6\n"; echo $content;
?> |
上面兩者皆會輸出一個excel.xls的excel檔案,裡面包含兩列資料,分別是"Col1"、"Col2"、"Col3"與"Col4"、"Col5"、"Col6",個人覺得此種方法與CSV檔案的用法大同小異,是目前最常見的使用方法。
<?php $xls = new COM ( "Excel.sheet") or die( "Did not connect"); $xlsFile = "C:\\tmp\\byPhp.xls" ; $workbook = $xls->Application->Workbooks->Open ( $xlsFile); or die ( "Failed to Open Workbook"); $xls->Application->Visible = 1 ; $worksheet = $workbook->Worksheets ( "Sheet1"); $worksheet->activate; $worksheet->Cells ( 1, 1) ->value = 100; $worksheet->Cells ( 2, 1) ->value = 20; $worksheet->Cells ( 3, 1) ->formula = "=A1 + A2"; print "100 + 20 = " . $worksheet->Cells ( 3, 1) ->value; $workbook->Saved = 0 ; $xls->Application->Quit ( ); unset($xls ); ?> |
更詳細的內容可以參考這個網址
全站熱搜
留言列表