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 
                
            
发表评论