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

发表评论