- Details
- Written by 小羅
http://phpexcel.codeplex.com/
用google找了一下,PHPExcel類別的功能非常強大,支援各版本的Excel檔案、CSV、HTML及PDF檔案的讀寫,有這方面的需求,改用這套工具可以省卻不少自行撰寫工具的時間,對使用者來說,Excel檔案的親和性比起CSV檔案來說,好太多了,所以決定使用Excel作為報表讀取檔案。
文章起頭的網址是PHPExcel的官網,從官網下載套件後,下載套件內的說明文件非常詳盡,花一二天就可以讀懂,使用上並不困難,只是要花時間熟悉使用方法。
PHPExcel的安裝
解壓縮下載的套件後,將Class目錄放到類別目錄下。
PHPExcel的使用
require Class/PHPExcel.php後,PHPExcel會自動載入需要的所有類別,不需作後續設定。
PHPExcel的設計哲學
物件分成三大區塊
1)Excel檔的操控--針對Excel2007版本的Excel進行操控,所有操控都在記憶體中進行,檔案的寫入及讀取由其他物件負責。
2)Excel檔的讀取--包含各版本Excel、PDF、CSV等
3)Excel檔的寫入--包含各版本Excel、PDF、CSV等
讀取Excel檔案的操件方法
1)由PHPExcel決定載入檔案的種類,如Excel版本,而不硬性設定。
1.$reader =
PHPExcel_IOFactory::load('excel檔');
2)由PHPExcel決定載入檔案的種類,不硬性設定讀取的檔案種類,但將檔案設定為唯讀屬性。
1.$reader=
PHPExcel_IOFactory::createReaderForFile('excel檔');
2.$reader->setReadDataOnly(true);
3.$excel= $reader->load('excel檔');
讀取某一格的Excel內容
column由0開始
row由1開始
1.$sheet=$excel->getActiveSheet();
2.$sheet->getCell('A8')
3.->getValue();
或
1.$sheet=$excel->getActiveSheet();
2.$sheet->getCellByColumnAndRow(2,8)
3.getValue();
取得公式計算後的結果
1.$sheet=$excel->getActiveSheet();
2.$sheet->getCell('A8')
3.->getCalculatedValue();
循序讀取cell的內容
01.<?php
02.$objReader =
PHPExcel_IOFactory::createReader('Excel2007');
03.$objReader->setReadDataOnly(true);
04.$objPHPExcel = $objReader->load("test.xlsx");
05.$objWorksheet = $objPHPExcel->getActiveSheet();
06.echo '<table>' . "\n";
07.foreach ($objWorksheet->getRowIterator()
as $row) {
08. echo '<tr>' . "\n";
09.$cellIterator = $row->getCellIterator();
10. $cellIterator->setIterateOnlyExistingCells(false);
11.
12.
13.
14.
15. foreach ($cellIterator as $cell) {
16. echo '<td>' . $cell->getValue() . '</td>'
. "\n";
17. }
18.echo '</tr>' . "\n";
19.}
20.echo '</table>' . "\n";
21.?>
01.<?php
02.$objReader =
PHPExcel_IOFactory::createReader('Excel2007');
03.$objReader->setReadDataOnly(true);
04.$objPHPExcel = $objReader->load("test.xlsx");
05.$objWorksheet = $objPHPExcel->getActiveSheet();
06.$highestRow = $objWorksheet->getHighestRow();
07.$highestColumn = $objWorksheet->getHighestColumn();
08.$highestColumnIndex =
PHPExcel_Cell::columnIndexFromString($highestColumn);
09.echo '<table>' . "\n";
10.for
($row =
1; $row <= $highestRow; ++$row) {
11. echo '<tr>' . "\n";
12.for
($col =
0; $col <= $highestColumnIndex; ++$col) {
13. echo '<td>' . $objWorksheet->getCellByColumnAndRow($col, $row)->getValue() . '</td>' . "\n";
14. }
15.echo '</tr>' . "\n";
16.}
17.echo '</table>' . "\n";
18.?>
設定使用第幾個活頁簿(index從0開始)
1.setActiveSheetIndex(0);
使用流程
1)讀取Excel檔案或創建Excel檔案
2)解析並操控Excel檔案
3)將記憶體中的Excel轉換成其他的型態