發佈日期:
分類:
了解PHPExcel的使用方法
01. 一直也知道PHPExcel的存在,只是沒有時間去多作了解,今天終於要利用到(版本為v1.8.0),也是時候好好學習利用PHPExcel,去處理Excel檔案。
02. 假設將會利用到PHPExcel的檔案,是在PHPExcel.php同一層的位置。
03. 讀取Excel檔案:用PHPExcel打開test.xls檔案,並以『$objPHPExcel』變數存放數據。
require_once dirname(__FILE__) . '/PHPExcel/IOFactory.php'; $inputFileName = 'test.xls'; try { $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0); } catch(Exception $e) { die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); }
04 讀取Excel檔案最大行和列位置:讀取test.xls檔案內最大的行(Row)同列(Column)位置數值。
$sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn();
05 將Excel檔案內容存於陣列:將test.xls檔案,存放於PHP的陣列(Array)內
for ($row = 1; $row <= $highestRow; $row++) { $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); }
06. 讀取儲存格內容:讀取Excel檔案內A1位置的數值。
$val = $objPHPExcel->getActiveSheet()->getCell('A1')->getValue();
07. 轉換Excel日期格式到PHP日期格式:讀取Excel檔案內A1位置,而A1位置為日期/時間類型,再轉換成PHP能夠辨認日期格式。
$sec = PHPExcel_Shared_Date::ExcelToPHP($objPHPExcel->getActiveSheet()->getCell('A1')->getValue()); $php_date = date('Y-m-d', $sec);
08. 新增PHPExcel物件用於存放數據:建立一個新的PHPExcel,變數為『$objPHPExcel1』,以便存放Excel內容。
require_once dirname(__FILE__) . '/PHPExcel/IOFactory.php'; try { $objPHPExcel1 = new PHPExcel(); $objPHPExcel1->setActiveSheetIndex(0); } catch(Exception $e) { die('Error create file'); }
09.1 以詢問使用者方式,下載及儲存為Excel檔案:將變數$objPHPExcel1內容,以下載檔案方式,儲存到Excel檔案test2.xls內。
header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="test2.xls"'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1, 'Excel5'); $objWriter->save('test2.xls');
09.2 直接儲存為Excel檔案:將變數$objPHPExcel1內容,儲存到Excel檔案test2.xls內。
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel1, 'Excel5'); $objWriter->save('test2.xls');
10.1 將數據寫入儲存格:將數值100存入Excel儲存格(Cells) A1位置。
$objPHPExcel->getActiveSheet()->setCellValue('A1', '100');
10.2 將方程式寫入儲存格:將方程式B2至B10總和存入Excel儲存格(Cells) A1位置。
$objPHPExcel1->getActiveSheet()->setCellValue('A1','=SUM(B2:B10)');
11. 設定列的寬度:設定列(Column) A,寬度為2位。
$objPHPExcel1->getActiveSheet()->getColumnDimension('A')->setWidth(2);
12. 設定行的高度:設定行(Row) A,高度為24單位。
$objPHPExcel1->getActiveSheet()->getRowDimension($row+3)->setRowHeight('24');
13. 設定儲存格上下左右置中:設定Excel表格內所有儲存格(Cells)為左右置中及上下置中。
$objPHPExcel1->getActiveSheet()->getStyle($objPHPExcel1->getActiveSheet()->calculateWorksheetDimension())->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel1->getActiveSheet()->getStyle($objPHPExcel1->getActiveSheet()->calculateWorksheetDimension())->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
14. 合併儲存格:將儲存格(Cells) A1-A10合併(Merge cells)。
$objPHPExcel1->getActiveSheet()->mergeCells('A1:A10');
15. 儲存格內容加上底線:將儲存格(Cells) A1內容加上底線(Underline)。
$cellUnderline = array( 'font' => array( 'underline' => PHPExcel_Style_Font::UNDERLINE_SINGLE ) ); $objPHPExcel1->getActiveSheet()->getStyle('A1')->applyFromArray($cellUnderline);
16.1 儲存格外圍加上框線:將儲存格(Cells) A1-G10,加上粗線外框。
$bstyle_outline = array( 'borders' => array( 'outline' => array( 'style' => PHPExcel_Style_Border::BORDER_THICK ) ) ); $objPHPExcel1->getActiveSheet()->getStyle('A1:G10')->applyFromArray($bstyle_outline);
16.2 所有選取儲存格加上框線:將儲存格(Cells) A1-G10,所有儲存格四邊框加上幼線。
$bstyle_all = array( 'borders' => array( 'allborders' => array( 'style' => PHPExcel_Style_Border::BORDER_THIN ) ) ); $objPHPExcel1->getActiveSheet()->getStyle('A1:G10')->applyFromArray($bstyle_all);
17. 設定儲存格字體大小:將儲存格(Cells) A1字體,設為14號字體。
$objPHPExcel1->getActiveSheet()->getStyle('A1')->getFont()->setSize(14);
18. 設定儲存格為粗體字:將儲存格(Cells) A1字體,設為粗體。
$objPHPExcel1->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
19. 設定儲存格為自動換行:將儲存格(Cells) A1內容,設為自動換行。
$objPHPExcel1->getActiveSheet()->getStyle('A1')->getAlignment()->setWrapText(true);
20.1 儲存格內容以百份比表示:將儲存格(Cells) A1內容,轉換成以百份比(Percentage)方式表示,即(x%)。
$percent = array( 'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE ); $objPHPExcel1->getActiveSheet()->getStyle('A1')->getNumberFormat()->applyFromArray($percent);
20.2 儲存格內容以百份比表示:將儲存格(Cells) A1內容,轉換成以百份比(Percentage)方式表示,即(x.xx%)。
$percent00 = array( 'code' => PHPExcel_Style_NumberFormat::FORMAT_PERCENTAGE_00 ); $objPHPExcel1->getActiveSheet()->getStyle('A1')->getNumberFormat()->applyFromArray($percent00);
21. 儲存格內容以小數點表示:將儲存格(Cells) A1內容,以小數點後5個位來表示。
$objPHPExcel1->getActiveSheet()->getStyle('A')->getNumberFormat()->setFormatCode('###0.00000');
發佈留言