2011/11/29

PHPExcel

PHPEcel
PHPExcel API

PHPExcel 是我用過最久最強大的 PHP 檔案轉成 Excel 檔案的套件,簡單介紹一下我常用到的方式,PHPExcel 可以儲存成 Office 2007 的格式,但有鑑於流通性的問題,下方的範例將格式存成 2003 的版本。

include_once 'lib/PHPExcel.php';
$excel = new PHPExcel();
$excel->setActiveSheetIndex(0); // 選擇sheet
$excel->getActiveSheet()->setTitle('sample'); // 將sheet命名
$excel->getActiveSheet()->SetCellValue('A1', 'Hello'); // 設定內容
$type = PHPExcel_Cell_DataType::TYPE_STRING;
$excel->getActiveSheet()->getCell('B1')->setValueExplicit('0966666666', $type);
// PHPExcel 可以選擇 Excel 的欄位格式
// 將格式轉成 string 可以避免像手機開頭的 0 自動忽略的問題
$excel->getActiveSheet()->getColumnDimension('A1')->setWidth(20); // 設定寬度

// 如果你無法預知欄位多寡,可以用動態的方式放置資料
for ($i = 2; $i < 5 ; $i++) {
    for ($j = 0; $j < 2; $j++) {
        $excel->getActiveSheet()->setCellValueByColumnAndRow($j, $i, 'test');
        $excel->getActiveSheet()->getCellByColumnAndRow(1, $i)->setValueExplicit('0966666666', $type);
    }
}

// 下載
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="sample.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save('php://output');

沒有留言: