PHPExcel讀取excel文件示例


PHPExcel讀取excel文件示例
PHPExcel最新版官方下載網址:http://phpexcel.codeplex.com/
PHPExcel是一個非常方便生成Excel格式文件的類,官方下載包中帶有大量如何生成各種樣式excel文件的示例,但沒有一個讀取Excel文件的完整例子,下面是讀取的例子:
讀取Excel的內容主要有兩個選擇:PHPExcelReader、PHPExcel。
PHPExcelReader比較輕量級,僅支持Excel的讀取,實際上就是一個Reader。但是可惜的是不能夠支持Excel 2007的格式(.xlsx)。
PHPExcel比較強大,能夠將內存中的數據輸出成Excel文件,同時還能夠對Excel做各種操作,下面主要介紹下如何使用PHPExcel進行Excel 2007格式(.xlsx)文件的讀取。

下載PHPExcel后保存到自己的類文件目錄中,然后使用以下代碼可以打開Excel 2007(xlsx)格式的文件:
require_once '/libs/PHPExcel-1.8.0/Classes/PHPExcel.php'; //修改為自己的目錄
echo '<p>TEST PHPExcel 1.8.0: read xlsx file</p>';
$objReader = PHPExcel_IOFactory::createReaderForFile($filename);
$objPHPExcel = $objReader->load($filename);
$objPHPExcel->setActiveSheetIndex(1);
$date = $objPHPExcel->getActiveSheet()->getCell('A16')->getValue();

輸出$date變量就能夠看到文件中的內容了。PHPExcel使用PHPExcel_IOFactory這個類來自動匹配所上傳的文件類型,當然我們也可以自己制定要解析的文件類型。
之后通過load方法,將PHP文件加載到objPHPExcel對象中。如果Excel文件有多個Sheet,可以通過setActiveSheetIndex來設置當前活動的Sheet。

需要注意的是,對於Excel中的日期格式,PHPExcel讀出來的是不是日期類型,需要我們使用以下方法來進行日期類型轉換。
echo date("Y-m-d H:i:s",PHPExcel_Shared_Date::ExcelToPHP($date));

下面的代碼顯示了如何遍歷顯示Excel的內容:
<table>
<?php
$objWorksheet = $objPHPExcel->getActiveSheet();
$i = 0;
foreach($objWorksheet->getRowIterator() as $row){
?>
<tr>
<?php
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(false);

if( $i == 0 ){
echo '<thead>';
}
foreach($cellIterator as $cell){

echo '<td>' . $cell->getValue() . '</td>';

}
if( $i == 0 ){
echo '</thead>';
}
$i++;
?>
</tr>
<?php
}
?>
</table>
=================================================

傳統方法:
<?php
require_once '../Classes/PHPExcel/IOFactory.php';
// Check prerequisites
if (!file_exists("test.xls")) {
exit("not found test.xls.\n");
}
$reader = PHPExcel_IOFactory::createReader('Excel5'); //設置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load("test.xls"); // 載入excel文件
$sheet = $PHPExcel->getSheet(0); // 讀取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得總行數
$highestColumm = $sheet->getHighestColumn(); // 取得總列數
$highestColumm= PHPExcel_Cell::columnIndexFromString($colsNum); //字母列轉換為數字列 如:AA變為27

/** 循環讀取每個單元格的數據 */
for ($row = 1; $row <= $highestRow; $row++){//行數是以第1行開始
for ($column = 0; $column < $highestColumm; $column++) {//列數是以第0列開始
$columnName = PHPExcel_Cell::stringFromColumnIndex($column);
echo $columnName.$row.":".$sheet->getCellByColumnAndRow($column, $row)->getValue()."<br />";
}
}
?>

精簡方法:
<?php
require_once '../Classes/PHPExcel/IOFactory.php';
// Check prerequisites
if (!file_exists("test.xls")) {
exit("not found test.xls.\n");
}
$reader = PHPExcel_IOFactory::createReader('Excel5'); //設置以Excel5格式(Excel97-2003工作簿)
$PHPExcel = $reader->load("test.xls"); // 載入excel文件
$sheet = $PHPExcel->getSheet(0); // 讀取第一個工作表
$highestRow = $sheet->getHighestRow(); // 取得總行數
$highestColumm = $sheet->getHighestColumn(); // 取得總列數

/** 循環讀取每個單元格的數據 */
for ($row = 1; $row <= $highestRow; $row++){//行數是以第1行開始
for ($column = 'A'; $column <= $highestColumm; $column++) {//列數是以A列開始
$dataset[] = $sheet->getCell($column.$row)->getValue();
echo $column.$row.":".$sheet->getCell($column.$row)->getValue()."<br />";
}
}
?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM