IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

分類:

, ,

了解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');

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *