php导出exl和在线预览
文章描述:
在很多时候会把数据库里面的数据导出用exl储存,在导出数据的时候可以先预览一下,看导出的exl表格是否是自己需要的格式,然后再导出数据,那么php导出exl和在线预览怎么做呢?
自定义表格
第一步:载入excel类
require ROOT_PATH.'PHPExcel/Classes/PHPExcel/IOFactory.php';
$objPHPExcel = new PHPExcel();
载入excel核心类后,方便我们设置导出表格样式、信息和导出表格用。
第二步:设置表格
设置表格的表头名
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'ID')
->setCellValue('B1', '产品名称')
->setCellValue('C1', '价格')
->setCellValue('D1', '时间')
->setCellValue('E1', '时间');
表头名是我们需要导出数据表的第一行,我们设置需要导出的表格第一行的值。
设置表格表头名宽度
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(50);
设置表格指定行高
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(20);
$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);
这是是指定第几行的行高是多少
设置表格指定行字体类型和字体大小
$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->getFont()->setName('宋体')->setSize(18)->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('A2:E2')->getFont()->setName('宋体')->setSize(12);
$objPHPExcel->getActiveSheet()->getStyle('A3:E3')->getFont()->setName('宋体')->setSize(8);
设置表格指定行字体水平居中
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:E1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
设置表格头部边框颜色和边框加粗
$styleArray = array(
'borders' => array(
'allborders' => array(
'style' => \PHPExcel_Style_Border::BORDER_THICK,
'color' => array ('rgb' => '000'),
),
),
);
$objPHPExcel->getActiveSheet()->getStyle('A1:E1')->applyFromArray($styleArray);
设置指定行边框颜色和加粗边框
$styletr = array(
'borders'=>array(
'allborders'=>array(
'style' => \PHPExcel_Style_Border::BORDER_THIN,
'color' => array ('rgb' => '000'),
)
)
);
$objPHPExcel->getActiveSheet()->getStyle('A2:E2')->applyFromArray($styletr);
设置循环内容的字体大小和颜色
$styleArraystr = array(
'font' => array(
'bold' => true,
'color' => array('rgb' => 'FF0000'),
'size' => 12,
'name' => 'Verdana'
));
第三步:读取数据和循环
查询读取
$list = $db->get_results("SELECT * FROM ".$db_pre->table('goods')." ",ARRAY_A);
首先查询数据库里面的数据,查询出来后以数组的方式储存。
循环数据
for($i=0;$i<count($list);$i++){
$objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$list[$i]['id']);
$objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$list[$i]['title']);
$objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$list[$i]['price']);
$objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$list[$i]['newstime']);
$objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$list[$i]['datetime']);
$objPHPExcel->getActiveSheet()->getStyle('A'.($i+2).':E'.($i+2))->applyFromArray($styletr);
$objPHPExcel->setActiveSheetIndex(0)->getStyle('A'.($i+2).':E'.($i+2))->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':E'.($i+4))->applyFromArray($styleArraystr);
}
循环数组里面的数据,调用上面自定义表格的样式
在线预览
$objPHPExcel = new PHPExcel_Writer_HTML($objPHPExcel);
$objPHPExcel->save('php://output');
导出exl文件
php导出exl在线预览以输出网页格式的对象,在线预览效果如下:
设置保存的Excel表格名称
$filename = '产品'.date('ymd',time()).'.xls';
设置当前激活的sheet表格名称
$objPHPExcel->getActiveSheet()->setTitle('罗技LG');
设置浏览器窗口下载表格
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$filename.'"');
生成excel文件
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
下载文件在浏览器窗口
$objWriter->save('php://output');
exit;
php导出exl表格运行效果如下:
发布时间:2021/08/06
发表评论