1.首先在PHPExcel官网上面下载安装包下载地址为:https://github.com/PHPOffice/PHPExcel
2.将PHPExcel里的classes文件夹改名为PHPExcel,并且复制到tp5框架下的vendor文件内
3.在控制器中用PHPExcel,只需要
vendor(“PHPExcel.PHPExcel”);
即可。
4.例子如下:
//下面两个函数放入控制器中,直接使用即可
public function lst()
{
//此方法成功了,配合下面的public static function excelPut( E x c e l , Excel, Excel,expTableData){函数
//不使用compose,将phpexcel文件夹放入vendor
//读取sql数据
$res = array(
array(‘王城’, ‘男’, ‘18’, ‘1997-03-13’, ‘18948348924’),
array(‘李飞虹’, ‘男’, ‘21’, ‘1994-06-13’, ‘159481838924’),
array(‘王芸’, ‘女’, ‘18’, ‘1997-03-13’, ‘18648313924’),
array(‘郭瑞’, ‘男’, ‘17’, ‘1998-04-13’, ‘15543248924’),
array(‘李晓霞’, ‘女’, ‘19’, ‘1996-06-13’, ‘18748348924’),
);
//文件名称
$Excel['fileName']="安全表".date('Y年m月d日-His',time());//or $xlsTitle
$Excel['cellName']=['A','B','C','D','E','F','G','H','I','J'];
//$Excel['H'] = ['A'=>5,'B'=>12,'C'=>12,'D'=>12,'E'=>12,'F'=>12,'G'=>12,'H'=>12,'I'=>12,'J'=>12];//横向水平宽度
$Excel['V'] = ['1'=>40,'2'=>26];//纵向垂直高度
$Excel['sheetTitle']="安全清单";//大标题,自定义
//excel每列的名字
$Excel['xlsCell']=[ [0,'ID'],
[1,'岗位'],
[2,'部门'],
[3,'日期'],
[4,'事件时段']
];
//excel表单数据
$this->excelPut($Excel,$res);
}
//输出到Excel
//1.去网上下载PHPExcel,将classes文件重命名为PHPExcel
//2.将重命名后的classes文件夹(即PHPExcel)复制到tp5框架下的vendor文件下
//3.然后就可以使用vendor("PHPExcel.PHPExcel");
public static function excelPut( E x c e l , Excel, Excel,expTableData){
E x c e l [ ′ s h e e t T i t l e ′ ] = i c o n v ( ′ u t f − 8 ′ , ′ g b 231 2 ′ , Excel['sheetTitle']=iconv('utf-8', 'gb2312', Excel[′sheetTitle′]=iconv(′utf−8′,′gb2312′,Excel[‘sheetTitle’]);
$cellName = $Excel[‘cellName’];
$xlsCell = $Excel[‘xlsCell’];
c e l l N u m = c o u n t ( cellNum = count( cellNum=count(xlsCell);//计算总列数
d a t a N u m = c o u n t ( dataNum = count( dataNum=count(expTableData);//计算数据总行数
vendor(“PHPExcel.PHPExcel”);
$objPHPExcel = new \PHPExcel();
$sheet0 = $objPHPExcel->getActiveSheet(0);
$sheet0->setTitle(“Sheet1”);//设置sheet名称
//设置表格标题A1
s h e e t 0 − > m e r g e C e l l s ( ′ A 1 : ′ . sheet0->mergeCells('A1:'. sheet0−>mergeCells(′A1:′.cellName[$cellNum-1].‘1’);//表头合并单元格
o b j P H P E x c e l − > s e t A c t i v e S h e e t I n d e x ( 0 ) − > s e t C e l l V a l u e ( ′ A 1 ′ , objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', objPHPExcel−>setActiveSheetIndex(0)−>setCellValue(′A1′,Excel[‘fileName’]);
// o b j P H P E x c e l − > s e t A c t i v e S h e e t I n d e x ( 0 ) / / − > s e t C e l l V a l u e ( ′ A 1 ′ , objPHPExcel->setActiveSheetIndex(0) // ->setCellValue('A1', objPHPExcel−>setActiveSheetIndex(0)//−>setCellValue(′A1′,Excel[‘sheetTitle’].date(‘Y年m月d日’,time()));
$sheet0->getStyle(‘A1’)->getFont()->setSize(20);
s h e e t 0 − > g e t S t y l e ( ′ A 1 ′ ) − > g e t F o n t ( ) − > s e t N a m e ( ′ 微 软 雅 黑 ′ ) ; / / 设 置 行 高 和 列 宽 / / 横 向 水 平 宽 度 i f ( i s s e t ( sheet0->getStyle('A1')->getFont()->setName('微软雅黑'); //设置行高和列宽 //横向水平宽度 if(isset( sheet0−>getStyle(′A1′)−>getFont()−>setName(′微软雅黑′);//设置行高和列宽//横向水平宽度if(isset(Excel[‘H’])){
foreach ($Excel[‘H’] as $key => $value) {
s h e e t 0 − > g e t C o l u m n D i m e n s i o n ( sheet0->getColumnDimension( sheet0−>getColumnDimension(key)->setWidth(KaTeX parse error: Expected 'EOF', got '}' at position 16: value); }̲ } //纵向…Excel[‘V’])){
foreach ($Excel[‘V’] as $key => $value) {
s h e e t 0 − > g e t R o w D i m e n s i o n ( sheet0->getRowDimension( sheet0−>getRowDimension(key)->setRowHeight($value);
}
}
//第二行:表头要加粗和居中,加入颜色
$sheet0->getStyle(‘A1’)
->applyFromArray([‘font’ => [‘bold’ => false],‘alignment’ => [‘horizontal’ => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,‘vertical’=>\PHPExcel_Style_Alignment::VERTICAL_CENTER]]);
$setcolor = s h e e t 0 − > g e t S t y l e ( " A 2 : " . sheet0->getStyle("A2:". sheet0−>getStyle("A2:".cellName[$cellNum-1].“2”)->getFill();
$setcolor->setFillType(\PHPExcel_Style_Fill::FILL_SOLID);
// $colors=[‘00a000’,‘53a500’,‘3385FF’,‘00a0d0’,‘D07E0E’,‘c000c0’,‘0C8080’,‘EFE4B0’];//设置总颜色
// s e l e c t c o l o r = selectcolor= selectcolor=colors[mt_rand(0,count($colors)-1)];//获取随机颜色
// s e t c o l o r − > g e t S t a r t C o l o r ( ) − > s e t R G B ( setcolor->getStartColor()->setRGB( setcolor−>getStartColor()−>setRGB(selectcolor);
s e t c o l o r − > g e t S t a r t C o l o r ( ) − > s e t R G B ( ′ A 6 A 6 A 6 ′ ) ; / / 根 据 表 格 数 据 设 置 列 名 称 f o r ( setcolor->getStartColor()->setRGB('A6A6A6'); //根据表格数据设置列名称 for( setcolor−>getStartColor()−>setRGB(′A6A6A6′);//根据表格数据设置列名称for(i=0; i < i< i<cellNum;$i++){
o b j P H P E x c e l − > s e t A c t i v e S h e e t I n d e x ( 0 ) − > s e t C e l l V a l u e ( objPHPExcel->setActiveSheetIndex(0) ->setCellValue( objPHPExcel−>setActiveSheetIndex(0)−>setCellValue(cellName[$i].‘2’, x l s C e l l [ xlsCell[ xlsCell[i][1])
->getStyle( c e l l N a m e [ cellName[ cellName[i].‘2’)
->applyFromArray([‘font’ => [‘bold’ => true],‘alignment’ => [‘horizontal’ => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,‘vertical’=>\PHPExcel_Style_Alignment::VERTICAL_CENTER]]);
}
//body:渲染表中数据内容部分
for( i = 0 ; i=0; i=0;i< d a t a N u m ; dataNum; dataNum;i++){
for( j = 0 ; j=0; j=0;j< c e l l N u m ; cellNum; cellNum;j++){
s h e e t 0 − > g e t S t y l e ( sheet0->getStyle( sheet0−>getStyle(cellName[ j ] . ( j].( j].(i+3))->applyFromArray([‘alignment’ => [‘horizontal’ => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,‘vertical’=>\PHPExcel_Style_Alignment::VERTICAL_CENTER]]);
s h e e t 0 − > s e t C e l l V a l u e E x p l i c i t ( sheet0->setCellValueExplicit( sheet0−>setCellValueExplicit(cellName[ j ] . ( j].( j].(i+3), e x p T a b l e D a t a [ expTableData[ expTableData[i][ x l s C e l l [ xlsCell[ xlsCell[j][0]],\PHPExcel_Cell_DataType::TYPE_STRING);
s h e e t 0 − > g e t S t y l e ( sheet0->getStyle( sheet0−>getStyle(cellName[ j ] . ( j].( j].(i+3))->getNumberFormat()->setFormatCode("@");
}
}
//设置边框
s h e e t 0 − > g e t S t y l e ( ′ A 2 : ′ . sheet0->getStyle('A2:'. sheet0−>getStyle(′A2:′.cellName[ c e l l N u m − 1 ] . ( cellNum-1].( cellNum−1].(i+2))->applyFromArray([‘borders’ => [‘allborders’ => [‘style’ => \PHPExcel_Style_Border::BORDER_THIN]]]);
// s h e e t 0 − > s e t C e l l V a l u e ( " A " . ( sheet0->setCellValue("A".( sheet0−>setCellValue("A".(dataNum+10)," “);//多设置一些行
header(‘pragma:public’);
header('Content-type:application/vnd.ms-excel;charset=utf-8;name=”’. E x c e l [ ′ s h e e t T i t l e ′ ] . ′ . x l s x " ′ ) ; h e a d e r ( " C o n t e n t − D i s p o s i t i o n : a t t a c h m e n t ; f i l e n a m e = " . Excel['sheetTitle'].'.xlsx"'); header("Content-Disposition:attachment;filename=". Excel[′sheetTitle′].′.xlsx"′);header("Content−Disposition:attachment;filename=".Excel[‘fileName’].".xlsx");
//attachment新窗口打印inline本窗口打印
KaTeX parse error: Expected 'EOF', got '\PHPExcel' at position 13: objWriter = \̲P̲H̲P̲E̲x̲c̲e̲l̲_IOFactory::cre…objPHPExcel, ‘Excel2007’);
$objWriter->save(‘php://output’);
exit;
}