- 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轉換成其他的型態