php導出表格兩種方法 ——PhpExcel的列子


php常用的導出表格有兩種方法,第一種是輸出表格,這種方法打開的時候有警告提示,一般導出表格會用phpexcel,這個導出比較靈活,而且還可以設置表格的樣式。

 

第一種導出例子

 

/**

 * 執行導出

 * @param unknown $result 數據源

 */

function Excel($result,$fileName='',$Key=''){

$fileName = iconv('utf-8', 'gbk',$fileName);

header("Content-type:text/html;charset=utf-8");

header("Content-type:application/octet-stream");

header("Accept-Ranges:bytes");

header("Content-type:application/vnd.ms-excel");

header("Content-Disposition:attachment;filename=$fileName".date("Y-m-d").".xls");

header("Pragma: no-cache");

header("Expires: 0");

//第一行顯示key

if(!$Key){

$Key = array("姓名 ","性別 ","手機號 ","意向車型 ","購買計划","提交時間");

}

echo iconv('utf-8', 'gbk', implode("\t", $Key))."\n";

//第三行顯示剩余val

foreach($result as $key=>$val){

echo iconv('utf-8', 'gbk', implode("\t", $val))."\n";

}

}

第二種導出使用phpexcel

 

/**

* 導出數據(生成excel)

* @param $data excel第一行數據

* 例:1、array('字段' => '1');

* @param $list 二維數組 導出的數據

* @param string $title 工作表名稱

* @param string $filename 文件名稱

* @return boolean

*/

public function output1($data , $list , $title = '數據模板' , $filename = '數據模板'){

$count  = count($data);//數組長度

if(!is_array($data) || $count > $this->maxstr){//數據是否符合要求

return false;

}

// Create new PHPExcel object

$objPHPExcel = new \PHPExcel();

// Set document properties

$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")

->setLastModifiedBy("Maarten Balliauw")

->setTitle("Office 2007 XLSX Test Document")

->setSubject("Office 2007 XLSX Test Document")

->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")

->setKeywords("office 2007 openxml php")

->setCategory("Test result file");

 

// Add some data 第一行

// 添加一些數據  第一行

$SheetIndex = $objPHPExcel->setActiveSheetIndex(0);

$this->setAttendance($SheetIndex);//寫入數據

 

//設置第一個單元格樣式

$obActiveSheet = $objPHPExcel->getActiveSheet();

 

//設置高度

$obActiveSheet->getRowDimension('1')->setRowHeight(40);

$obActiveSheet->getRowDimension('6')->setRowHeight(100);

$obActiveSheet->getRowDimension('7')->setRowHeight(90);

$obActiveSheet->getRowDimension('8')->setRowHeight(90);

$obActiveSheet->getRowDimension('9')->setRowHeight(90);

$obActiveSheet->getRowDimension('10')->setRowHeight(80);

$obActiveSheet->getRowDimension('17')->setRowHeight(20);

$obActiveSheet->getRowDimension('18')->setRowHeight(30);

$obActiveSheet->getRowDimension('19')->setRowHeight(30);

//設置寬度

$obActiveSheet->getColumnDimension('A')->setWidth(12);

$obActiveSheet->getColumnDimension('B')->setWidth(18);

$obActiveSheet->getColumnDimension('C')->setWidth(15);

$obActiveSheet->getColumnDimension('D')->setWidth(15);

$obActiveSheet->getColumnDimension('E')->setWidth(15);

$obActiveSheet->getColumnDimension('H')->setWidth(15);

//導出

$this->outputPHPExcel($objPHPExcel, $filename);

 

}

 

/**

* 考勤數據寫入

* @param $SheetIndex 單元格對象

* @param $Cycle 周期數據列表

* @param $_clock 員工考勤數據

* @return number 返回當前最大行數

*/

private function setAttendance($SheetIndex){

$c = 1;

/** ----------------------------考勤頭部開始--------------------------------------- */

$chrA = chr($this->asciiA  + 0);//A

$chrB= chr($this->asciiA + 1);//B

$chrC= chr($this->asciiA + 2);//C

$chrD= chr($this->asciiA + 3);//D

$chrE= chr($this->asciiA + 4);//E

$chrF= chr($this->asciiA + 5);//F

$chrG= chr($this->asciiA + 6);//G

$chrH= chr($this->asciiA + 7);//G

$chrI= chr($this->asciiA + 8);//G

$chrJ= chr($this->asciiA + 9);//G

$chrK= chr($this->asciiA + 10);//G

$chrL= chr($this->asciiA + 11);//G

$chrM= chr($this->asciiA + 12);//G

$chrN= chr($this->asciiA + 13);//G

$chrO= chr($this->asciiA + 14);//G

 

 

$SheetIndex->setCellValueExplicit($chrA.($c), '崗位考核模板');

$SheetIndex->mergeCells($chrA.($c).':'.$chrO.($c));//合並單元格 A2,A3

 

 

$SheetIndex->setCellValueExplicit($chrA.($c+1), '被考核人');

$SheetIndex->mergeCells($chrA.($c+1).':'.$chrA.($c+2));//合並單元格 A2,A3

 

$SheetIndex->setCellValueExplicit($chrB.($c+1), '姓名');

$SheetIndex->setCellValueExplicit($chrB.($c+2), '職務');

$SheetIndex->setCellValueExplicit($chrC.($c+1), 'xxx');

 

$SheetIndex->setCellValueExplicit($chrD.($c+1), '部門');

$SheetIndex->setCellValueExplicit($chrD.($c+2), '入職時間');

$SheetIndex->setCellValueExplicit($chrE.($c+1), '網站開發部');

$SheetIndex->mergeCells($chrE.($c+1).':'.$chrG.($c+1));//合並單元格

$SheetIndex->mergeCells($chrE.($c+2).':'.$chrG.($c+2));//合並單元格

 

$SheetIndex->setCellValueExplicit($chrH.($c+1), '被考核人主管');

$SheetIndex->mergeCells($chrH.($c+1).':'.$chrI.($c+1));//合並單元格 

$SheetIndex->mergeCells($chrH.($c+2).':'.$chrI.($c+2));//合並單元格

$SheetIndex->setCellValueExplicit($chrJ.($c+1), '姓名');

$SheetIndex->setCellValueExplicit($chrJ.($c+2), '職務');

 

$SheetIndex->setCellValueExplicit($chrK.($c+1), 'xxx);

$SheetIndex->mergeCells($chrK.($c+1).':'.$chrO.($c+1));//合並單元格

$SheetIndex->mergeCells($chrK.($c+2).':'.$chrO.($c+2));//合並單元格

 

$SheetIndex->mergeCells($chrA.($c+3).':'.$chrO.($c+3));//合並單元格

 

//第5行

$SheetIndex->setCellValueExplicit($chrA.($c+4), '序號');

$SheetIndex->setCellValueExplicit($chrB.($c+4), '指標名稱');

$SheetIndex->setCellValueExplicit($chrC.($c+4), '權重');

$SheetIndex->setCellValueExplicit($chrD.($c+4), '衡量方法');

$SheetIndex->setCellValueExplicit($chrM.($c+4), '評定');

$SheetIndex->setCellValueExplicit($chrN.($c+4), '評分');

$SheetIndex->setCellValueExplicit($chrO.($c+4), '最終得分');

$SheetIndex->mergeCells($chrD.($c+4).':'.$chrL.($c+4));//合並單元格

 

//第6行

$SheetIndex->setCellValueExplicit($chrA.($c+5), '1');

$SheetIndex->setCellValueExplicit($chrB.($c+5), '工作完成度');

$SheetIndex->setCellValueExplicit($chrC.($c+5), '30%');

$SheetIndex->setCellValueExplicit($chrD.($c+5), "A+:測試沒有崩潰、嚴重並且無高級別bug

A:測試沒有崩潰、嚴重並且高級別bug控制在所有bug的1%以內,中級別bug控制在10%

100:測試沒有崩潰、嚴重並且高級別bug控制在所有bug的2%以內,中級別bug控制在20%

B :測試沒有崩潰、嚴重並且高級別bug控制在所有bug的5%,使用方反饋系統中出現文案、兼容性等對系統造成較小影響的bug

B-: 有崩潰嚴重bug或者無奔潰嚴重bug但是有5%以上的高級別bug,使用方反饋在使用中出現功能無法使用、500、404等嚴重故障");

$SheetIndex->setCellValueExplicit($chrM.($c+5), '100');

$SheetIndex->setCellValueExplicit($chrN.($c+5), '100');

$SheetIndex->setCellValueExplicit($chrO.($c+5), '30');

$SheetIndex->mergeCells($chrD.($c+5).':'.$chrL.($c+5));//合並單元格

}

這只是部分代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM