PHP EXCEL ~ 使用PHP產生EXCEL檔案

之前環安系要做的輸出~~我們是做成csv檔~~

只要一些簡單的文字輸出就可以製作了~~~但是只有簡單的文字與表格

但是現在人家要求的是要有顏色~~粗體等等的呈現~~~這是csv做不到的~~~

所以一定要使用程式去產生真正的excel檔案~~~~~

於是我上網找~~~找到了

PHPExcel

這玩意超酷的~~~~~所有的設定製作通通都用物件完成

這邊有我使用這API的小範例~~~~~

include 'PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'PHPExcel/Writer/Excel2007.php';

$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);

//寫入資料到A1跟B1欄位
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Description');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'Amount');

// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('FUCK');

//設定B1顏色根粗體
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);

//設定B1背景色 $objPHPExcel->getActiveSheet()->getStyle('B1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFill()->getStartColor()->setARGB('FF808080');

//設定A這一條的寬度為50
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(50);

// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);

//寫入成 aaaa.xlsx檔案
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->save('aaaa.xlsx');


再使用之前~~~~要把一個php的extension打開

叫做~~~~~~~~~~php_zip

不然會無法建立excel檔並出現錯誤

4 則留言:

匿名 說...

嗨,您好,
小弟路過此地..
請教一下您使用phpexcel的平台是linux嗎?
小弟使用redhat as3,php5,phpexcel 1.6.7
輸出成execel 5格式時,會發生如果該儲存格有中文時,轉出來的excel那一個儲存格整個內容會變成空白,
請問您有這種情形嗎?謝謝您..

Bitty 說...

是windows耶~

我沒發生這種情況@_@

因為編碼的關係嗎..........

映像中excel好像要用big5編碼

如果你的 php檔事utf8要用iconv轉


我也不太確定~~好久沒摸php了XD

匿名 說...

嗨嗨..想不到您這麼快速的回答(沒看到..>_<)
本來嘗試用iconv()去轉中文字串,覺得這樣不太人性.
繞去在phpexcel的討論區有看到類似您的說法..於是嘗試去找轉php檔為utf-8的方法...又找好久看到有人寫用iconv也可以拿來轉檔案才解決..
想不到您兩句話就說明了..果然是高手啊~~~~

還是謝謝您的幫忙喔~~*^_^*

Bitty 說...

哪有@0@

小的一點小建議不足掛齒@@