1. 程式人生 > >PHPExcel的使用方法和程式碼示例

PHPExcel的使用方法和程式碼示例

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即可。實際專案中,是把匯出按鈕指向該地址。