PHPExcel的使用方法和程式碼示例
阿新 • • 發佈:2019-02-02
1. 簡介
PHPExcel是用來操作Office Excel文件的一個PHP類庫,它基於微軟的OpenXML標準和PHP語言。可以用它來讀取或寫入Excel電子表格。
也就是說,PHPExcel是一個操作Excel表格的類庫。
2. 下載
3. 部署
下載 PHPExcel-1.8.zip 之後解壓,裡面的Classes資料夾就是我們所需要的類庫。
這裡,以ThinkPHP 3.2.3版本中的部署為例進行講解。
將Classes資料夾拷貝出來,並重命名為PHPExcel。然後,將其拷貝到TP框架的Vendor目錄(ThinkPHP/Library/Vendor/)下。
4. 示例
首先,封裝一個函式,便於對所有的二維陣列匯出為Excel表格。
/**
* 匯出excel表格(適合沒有單元格合併的情況)
* @param array $data 二維陣列
* @param array $table_head 表頭(即excel工作表的第一行標題)
* @param string $file_name 檔名
* @param string $sheet_name 工作表名
*/
function export_excel(array $data=array(), array $table_head=array(), $file_name= 'excel', $sheet_name='sheet')
{
vendor('PHPExcel.PHPExcel'); // 將Vendor目錄中的PHPExcel/PHPExcel.php類檔案引入
$objPHPExcel = new PHPExcel(); // 建立PHPExcel物件
// 設定excel檔案的屬性,在excel檔案->屬性->詳細資訊,可以看到這些值
$objPHPExcel->getProperties() //獲得檔案屬性物件,給下文提供設定資源
->setCreator( "admin" ) //設定檔案的建立者
->setLastModifiedBy( "admin") //最後修改者
->setTitle( "Office 2007 XLSX Record Document" ) //標題
->setSubject( "Office 2007 XLSX Record Document" ) //主題
->setDescription( "Record document for Office 2007 XLSX, generated using PHP classes.") //描述
->setKeywords( "office 2007 openxml php") //關鍵字
->setCategory( "export file"); //類別
// 設定Excel文件的第一張sheet(工作表)為活動表,即當前操作的表。
$objPHPExcel->setActiveSheetIndex(0);
// 獲取當前操作的工作表
$activeSheet = $objPHPExcel->getActiveSheet();
// 設定工作表的名稱
$activeSheet->setTitle($sheet_name);
// 返回字元A的 ASCII 碼值
$column = ord('A');
// 設定工作表的表頭
foreach ($table_head as $k=>$v) {
// 字型大小
$activeSheet->getStyle(chr($column)."1")->getFont()->setSize(13);
// 加粗
$activeSheet->getStyle(chr($column)."1")->getFont()->setBold(true);
// 列寬
$chars = strlen($v); // 統計位元組數
$activeSheet->getColumnDimension(chr($column))->setWidth($chars*2);
// 設定單元格的值
$activeSheet->setCellValue(chr($column)."1", $v);
// 設定左對齊
$activeSheet->getStyle(chr($column))->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$column++;
}
$column = ord('A'); // 返回字元的 ASCII 碼值
// 將$data中的資料填充到單元格中
foreach ($data as $row=>$col) {
$i=0;
foreach ($col as $k=>$v ) {
$activeSheet->setCellValue(chr($column+$i).($row+2), $v);
$i++;
}
}
// 匯出Excel表格
$file_name .= date('Ymd'); // 檔名
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$file_name.'.xls"');
header('Cache-Control: max-age=0');
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save('php://output');
}
然後,在TP框架的控制器層進行測試。
<?php
namespace admin\Controller;
use Think\Controller;
class TestController extends Controller
{
public function index()
{
$data = array(
array('id'=>1, 'name'=>'小三', 'id_card'=>'420928199003065555'),
array('id'=>2, 'name'=>'小四', 'id_card'=>'420928199003066666'),
array('id'=>3, 'name'=>'小五', 'id_card'=>'420928199003067777'),
array('id'=>4, 'name'=>'小六', 'id_card'=>'420928199003068888'),
);
$table_head = array('使用者ID', '姓名', '身份證號');
export_excel($data, $table_head);
}
}
最後,在瀏覽器中訪問該URL即可。實際專案中,是把匯出按鈕指向該地址。