Skip to content

Instantly share code, notes, and snippets.

@thomasjao
Last active October 22, 2015 16:58
Show Gist options
  • Save thomasjao/2d456bb7f29af91e1fac to your computer and use it in GitHub Desktop.
Save thomasjao/2d456bb7f29af91e1fac to your computer and use it in GitHub Desktop.
<?php
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="file.xlsx"');
// PHPExcel 置於 DocumentRoot 的上一層目錄
$path = dirname(dirname(__FILE__)).'/Classes/';
require_once($path.'PHPExcel.php');
require_once($path.'PHPExcel/Writer/Excel2007.php');
$objPHPExcel = new PHPExcel();
// 設定文件 Metadata
$objPHPExcel->getProperties()->setCreator('Thomas Jao')
->setLastModifiedBy('Thomas Jao')
->setTitle('PHPExcel generated MS Office 2007 XLSX File')
->setSubject('An Example Program')
->setDescription('各種格式設定範例')
->setKeywords('office 2007 openxml php')
->setCategory('範例');
// 加入資料
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello')
->setCellValue('A2', true)
->setCellValue('A3', false)
->setCellValue('B2', 'world!')
->setCellValue('C1', '中文不許特別設定')
->setCellValue('C2', '函數可以直接串聯使用');
// 以 Loop 加入資料
for ($i=1; $i<200; $i++) {
$objPHPExcel->getActiveSheet()->setCellValue('E'.$i, $i);
$objPHPExcel->getActiveSheet()->setCellValue('F'.$i, '項目 ' + $i);
}
// 格式化日期資料
$objPHPExcel->getActiveSheet()->setCellValue('D1’, time());
$objPHPExcel->getActiveSheet()->getStyle('D1'->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
// 加入註解
$objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel');
$objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel');
$objCommentRichText->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getComment('E11')->getText->createTextRun("\r\n");
$objPHPExcel->getActiveSheet()->getComment('E11')->getText->createTextRun('可以用函數加入註解');
// 合併儲存格
$objPHPExcel->getActiveSheet()->mergeCells('A18:E22');
$objPHPExcel->getActiveSheet()->unMergeCells('A18:E22');
// 保護儲存格
// 設定儲存格格式
$objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objPHPExcel->getActiveSheet()->duplicateStyle($objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13');
// 設定欄寬
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
// 設定字體
// 設定對齊
$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
// 設定邊界
// 設定邊界顏色
// 設定填滿
// 加入超連結
// 加入圖形
// 加入條件式格式
// 設定自動過濾
// 隱藏欄或列
// 設定文件密碼保護
// 設定工作表密碼保護
// 計算資料
// 設定大綱層級
// 凍結窗格
// 列印時頂端重複列數
// 設定資料驗證
// 建立新工作表於預設工作表後
// 設定頁首及頁尾
// 設定紙張方向及大小
// 重新命名工作表
// 準備輸出
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save($path.'PHPExcelOutput.xlsx'); // or
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
// 或者採用類別方法
// require_once($path.'PHPExcel/IOFactory.php');
// $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
// 清除輸出緩衝區內容後,直接輸出成自動下載檔案
ob_end_clean();
$objWriter->save('php://output');
/*
PHPExcel Function Reference: http://www.cmsws.com/examples/applications/phpexcel/Documentation/API/elementindex.html
*/
@thomasjao
Copy link
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment