2014年11月19日 星期三

PHPExcel 的使用方式整理(二)操作儲存格的方式

常見的儲存格操作有下列幾種
一、合併儲存格
二、取得儲存格物件
三、透過儲存格物件設值


一、合併儲存格
$objWorksheet->mergeCells("A1:B1");
$objWorksheet->setCellValue("A1", "電話簿");


二、取得儲存格物件
要將值填入儲存格中,最簡單的就是用 setCellValue() 直接指定儲存格位置及要填入的值,例如 :
$objWorksheet->setCellValue("B1","電話");

但是這種方式在某些情況下並不太好用,所以 PHPExcel 提供了其他的方式來完成這項工作。

首先,我們得取得儲存格物件,這可以透過 getCell() 或是 getCellByColumnAndRow() 來完成

$objCell = $objWorksheet->getCell("B1");
或是
$objCell = $objWorksheet->getCellByColumnAndRow(1, 1);
這兩行程式碼的效果是一樣的

在這要注意的是 Column(行) 是由 0 起算,也是是 A 為 0、B 為 1;Row(列) 則是由 1 起算


三、透過儲存格物件設值
取得儲存格物件後,就可以用 setValue() 來設值

$objCell->setValue("電話");

也可以用 method chaining 的方式,將以上二個步驟用以以下的方式來改寫:

$objWorksheet->getCellByColumnAndRow(1, 1)->setValue("電話");



比較完整的程式範例如下:

// 檔案名稱:phpexcel_example_02.php

// 引入 PHPExcel 函式庫
include_once "Classes/PHPExcel.php";

//接著我們要生成一個 PHPExcel 物件來幫忙我們處理 Excel 檔案
$objPHPExcel = new PHPExcel();

// 將活頁簿裏的第一張工作表設為要操作的工作表
$objPHPExcel->setActiveSheetIndex(0);

// 取得工作表物件
$objWorksheet = $objPHPExcel->getActiveSheet();

// 合併儲存格並將值填入儲存格中
$objWorksheet->mergeCells("A1:B1");
$objWorksheet->setCellValue("A1", "電話簿");

// 將值填入儲存格中
$objWorksheet->getCell("A2")->setValue("姓名");
$objWorksheet->getCell("B2")->setValue("電話");

$objWorksheet->getCellByColumnAndRow(0, 3)->setValue("王小明");
$objWorksheet->getCellByColumnAndRow(1, 3)->setValue("0911222333");
$objWorksheet->getCellByColumnAndRow(0, 4)->setValue("張小志");
$objWorksheet->getCellByColumnAndRow(1, 4)->setValue("0944555666");
$objWorksheet->getCellByColumnAndRow(0, 5)->setValue("陳小祥");
$objWorksheet->getCellByColumnAndRow(1, 5)->setValue("0977888999");

// 輸出 header
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment;filename=test_02.xls");
header("Cache-Control: max-age=0");

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


範例檔 phpexcel_example_02.php


沒有留言: