最近因為工作上的需要每天必須以人工整合大量的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 );?> |
更詳細的內容可以參考這個網址
文章標籤
全站熱搜

Maybe $content = "Col4 \t...."; need change to $content .= "Col4 \t....";
emily: you are right....thank you
工作的時候最重要是省時又能省力 工程師也常常就是我們省時又省力的救星 省下的時間可以做更多事情
以前曾經用過很多輸出 EXCEL 的方式 最後發現一種最簡單的方式 就照著 html table 的語法去寫就好,可以輸出成 EXCEL 也可以輸成網頁 要輸出 EXCEL 就直接放一個 header 就好 excel 會自動將網頁的表格讀入 EXCEL,方便又省事
很有用 謝啦 我們也要做報表!!!!!