PHPExcel gitub下载地址:https://github.com/ZAX96/PHPExcel
PHPExcel扩展文件没有用composer安装,直接下载文件
找到上图所在的文件夹,剪切或复制下Classes文件可重命名,此处用PHPExcel。然后将文件夹放在extend下
引入文件用如下代码,亲测可用,其余的引入要么不能用要么要修改文件比较麻烦
use think\facade\App;
require_once App::getRootPath().'/extend/PHPExcel/PHPExcel.php';
导出主要代码:
$objPHPExcel = new \PHPExcel();
$objPHPExcel->getProperties() //获得文件属性对象,给下文提供设置资源
->setCreator("zax") //设置文件的创建者
->setLastModifiedBy("zax") //设置最后修改者
->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"); //设置类别
//设置列宽,不用显示出来的是内容自适应
//getColumnDimension 可指定特殊列
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(40);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
//设置行高度
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(25);
//set font size bold
//字体样式设置 字体大小,加粗效果
//getStyle 可填单字母表示所有列 也可以用英文:连接表示从A到B所有列
$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(15);
$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getFont()->setBold(true);
//文字对齐方式
// HORIZONTAL_RIGHT 水平方向上对齐
// HORIZONTAL_JUSTIFY 水平方向上两端对齐
// VERTICAL_CENTER 垂直方向上中间居中
$objPHPExcel->getActiveSheet()->getStyle('A:J')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//合并cell
$objPHPExcel->getActiveSheet()->mergeCells('A1:J1');
// set table header content
$objPHPExcel->setActiveSheetIndex(0) //设置第一个内置表(一个xls文件里可以有多个表)为活动的
->setCellValue('A1', '项目数据汇总 时间:'.date('Y-m-d H:i:s')) //给表的单元格设置数据
->setCellValue('A2', '项目类型') //数据格式可以为字符串 数字型 布尔型 公式
->setCellValue('B2', '客户名称')
->setCellValue('C2', '项目名称')
->setCellValue('D2', '签单时间')
->setCellValue('E2', '到期时间')
->setCellValue('F2', '市场价')
->setCellValue('G2', '成本折扣')
->setCellValue('H2', '成本价')
->setCellValue('I2', '认证类型')
->setCellValue('J2', '状态');
// Miscellaneous glyphs, UTF-8
for($i=0;$i<count($list);$i++){
$objPHPExcel->getActiveSheet(0)->setCellValue('A'.($i+3), $list[$i]['category']);
$objPHPExcel->getActiveSheet(0)->setCellValue('B'.($i+3), $list[$i]['customer']);
$objPHPExcel->getActiveSheet(0)->setCellValue('C'.($i+3), $list[$i]['name']);
$objPHPExcel->getActiveSheet(0)->setCellValue('D'.($i+3), $list[$i]['sign_time']);
$objPHPExcel->getActiveSheet(0)->setCellValue('E'.($i+3), $list[$i]['end_time']);
$objPHPExcel->getActiveSheet(0)->setCellValue('F'.($i+3), $list[$i]['price']);
$objPHPExcel->getActiveSheet(0)->setCellValue('G'.($i+3), $list[$i]['discount']);
$objPHPExcel->getActiveSheet(0)->setCellValue('H'.($i+3), $list[$i]['amount']);
if ($list[$i]['is_protect'] == 1){
$list[$i]['is_protect']='保护';
}else{
$list[$i]['is_protect']='认证';
}
$objPHPExcel->getActiveSheet(0)->setCellValue('I'.($i+3), $list[$i]['is_protect']);
if ($list[$i]['status'] == 1){
$list[$i]['status']='等待审核';
}elseif($list[$i]['status'] == 2){
$list[$i]['status']='审核通过';
}else{
$list[$i]['status']='审核失败';
}
$objPHPExcel->getActiveSheet(0)->setCellValue('J'.($i+3), $list[$i]['status']);
}
// sheet命名
$objPHPExcel->getActiveSheet()->setTitle('项目表');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// 生成2003excel格式的xls文件
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
// 生成2007excel格式的xlsx文件
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="01simple.xlsx"');
header('Cache-Control: max-age=0');
$IOFactory = new \PHPExcel_IOFactory();
$objWriter = $IOFactory:: createWriter($objPHPExcel, 'Excel2007');
// 下载一个pdf文件--需要安装扩展文件tcpdf
// header('Content-Type: application/pdf');
// header('Content-Disposition: attachment;filename="01simple.pdf"');
// header('Cache-Control: max-age=0');
// $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF');
// 生成一个pdf文件
// $objWriter = $IOFactory::createWriter($objPHPExcel, 'PDF');
// $objWriter->save('a.pdf');
$objWriter->save('php://output');
补充样式设置
// CSV 文件
o b j W r i t e r = P H P E x c e l I O F a c t o r y : : c r e a t e W r i t e r ( objWriter = PHPExcel_IOFactory::createWriter( objWriter=PHPExcelIOFactory::createWriter(objPHPExcel, ‘CSV’)->setDelimiter(’,’ ) //设置分隔符
->setEnclosure(’"’ ) //设置包围符
->setLineEnding("\r\n" )//设置行分隔符
->setSheetIndex(0) //设置活动表
->save(str_replace(’.php’ , ‘.csv’ , FILE));
// HTML 文件
$objWriter = I O F a c t o r y : : c r e a t e W r i t e r ( IOFactory::createWriter( IOFactory::createWriter(objPHPExcel, ‘HTML’); //将$objPHPEcel对象转换成html格式的
$objWriter->setSheetIndex(0); //设置活动表
$objWriter->setImagesRoot(‘http://www.example.com’);
$objWriter->save(str_replace(’.php’, ‘.htm’, FILE)); //保存文件
// excel头参数
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename="项目表(’.date(‘Ymd-His’).’).xls"’); //日期为文件名后缀
header(‘Cache-Control: max-age=0’);
背景填充颜色
//设置填充的样式和背景色
$objPHPExcel->getActiveSheet()->getStyle( ‘A1:E1’)->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle( ‘A1:E1’)->getFill()->getStartColor()->setARGB(‘FF808080’);
给单元格内容设置url超链接
$objActSheet->getCell(‘E26’)->getHyperlink()->setUrl( ‘http://www.phpexcel.net’); //超链接url地址
$objActSheet->getCell(‘E26’)->getHyperlink()->setTooltip( ‘Navigate to website’); //鼠标移上去连接提示信息
前端layui导出按钮
<button type="button" lay-submit="" class="layui-btn layui-btn-normal" lay-filter="uploadImg" id="export">
<i class="layui-icon"></i>导出本页数据</button>