用 PHP 讀寫 Excel 檔案
發表於 : 2009-07-09 16:48:37
http://blog.linym.net/archives/229
PHP 讀寫 Excel 的方法有很多種,例如先轉成 CSV 格式來讀,然後用特定符號去分隔欄位。但是如果遇到欄位格式不固定的 Excel 就很麻煩了,所以需要可以直接操作 excel 的方法,方便直接指定要取某欄某列的值。
如果是 Windows 系統的話可以使用 COM 元件去讀取,但缺點就是只能在 Windows 上跑,失去了跨平台性,所以也有人另外寫出可以讀寫 Excel 的類別,這次要推薦的是 PHPExcel,PHPExcel 的功能非常強大,原本就支援 Excel 2007,新版中也能讀取 Excel 2003 舊版的 Excel 囉!
從 PHPExcel 下載回來的檔案中就包含不少範例,但是讀取的部份很簡略,所以底下貼個讀取 Excel 內容的範例:
view plaincopy to clipboardprint?
1. <?php
2. set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');
3. include 'PHPExcel/IOFactory.php';
4.
5. $reader = PHPExcel_IOFactory::createReader('Excel5'); // 讀取舊版 excel 檔案
6. $PHPExcel = $reader->load("course_table.xls"); // 檔案名稱
7. $sheet = $PHPExcel->getSheet(0); // 讀取第一個工作表(編號從 0 開始)
8. $highestRow = $sheet->getHighestRow(); // 取得總列數
9.
10. // 一次讀取一列
11. for ($row = 2; $row <= $highestRow; $row++) {
12.
13. for ($column = 1; $column <= 9; $column++) {
14. $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();
15. echo $val . ' ';
16. }
17. echo "<br />";
18.
19. }
PHP 讀寫 Excel 的方法有很多種,例如先轉成 CSV 格式來讀,然後用特定符號去分隔欄位。但是如果遇到欄位格式不固定的 Excel 就很麻煩了,所以需要可以直接操作 excel 的方法,方便直接指定要取某欄某列的值。
如果是 Windows 系統的話可以使用 COM 元件去讀取,但缺點就是只能在 Windows 上跑,失去了跨平台性,所以也有人另外寫出可以讀寫 Excel 的類別,這次要推薦的是 PHPExcel,PHPExcel 的功能非常強大,原本就支援 Excel 2007,新版中也能讀取 Excel 2003 舊版的 Excel 囉!
從 PHPExcel 下載回來的檔案中就包含不少範例,但是讀取的部份很簡略,所以底下貼個讀取 Excel 內容的範例:
view plaincopy to clipboardprint?
1. <?php
2. set_include_path(get_include_path() . PATH_SEPARATOR . './Classes/');
3. include 'PHPExcel/IOFactory.php';
4.
5. $reader = PHPExcel_IOFactory::createReader('Excel5'); // 讀取舊版 excel 檔案
6. $PHPExcel = $reader->load("course_table.xls"); // 檔案名稱
7. $sheet = $PHPExcel->getSheet(0); // 讀取第一個工作表(編號從 0 開始)
8. $highestRow = $sheet->getHighestRow(); // 取得總列數
9.
10. // 一次讀取一列
11. for ($row = 2; $row <= $highestRow; $row++) {
12.
13. for ($column = 1; $column <= 9; $column++) {
14. $val = $sheet->getCellByColumnAndRow($column, $row)->getValue();
15. echo $val . ' ';
16. }
17. echo "<br />";
18.
19. }