数据处理第一步,利用Spreadsheet导出各种格式

由于phpexcel很久以前都已经停止维护了,所以目前用更加好的类库Spreadsheet,

上一篇说了怎么直接引入Spreadsheet到项目,今天说明一下怎么用Spreadsheet,下面以导出xlsx文档说明

// 首先实例化 Spreadsheet 对象
$spreadsheet = new Spreadsheet();

 // 设置文档的基本属性
$spreadsheet->getProperties()->setCreator(APPLICATION_NAME)//创作者
    ->setLastModifiedBy(APPLICATION_NAME)//最后更新者
    ->setTitle(APPLICATION_NAME.'-数据统计')//属性标题
    ->setSubject(APPLICATION_NAME.'-文档整理')//主题
    ->setDescription('小V平台一个是集成微信系统、智能公众号、微官网、微商城、支付中台等功能的平台')
    ->setKeywords('小V平台,'.APPLICATION_NAME)
    ->setCategory('免费资源');

try{
    //设置宽度
    $spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(25);
    $spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(20);
    $spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(20);
    $spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(15);
    $spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(22);
    $spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(20);
    $spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(30);
    $spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(30);

    //设置行高度
    $spreadsheet->getActiveSheet()->getRowDimension('1')->setRowHeight(22);
    $spreadsheet->getActiveSheet()->getRowDimension('2')->setRowHeight(20);


    //设置水平居中
    $spreadsheet->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
    //合并单元格
    $spreadsheet->getActiveSheet()->mergeCells('A1:G1');
    
    //设置数据,这样比较好在php里面遍历数据设置
    $spreadsheet->setActiveSheetIndex(0)->setCellValue('单元格', '数据值');

    //也支持连续设置值,这样适合不需要动态改变的数据
    $spreadsheet->setActiveSheetIndex(0)->setCellValue('单元格1', '值1')->setCellValue('单元格2', '值2');

    // 重命名表单
    $spreadsheet->getActiveSheet()->setTitle('表单名称');

    //设置一个激活状态(打开时选中状态),支持范围,默认0
    $spreadsheet->setActiveSheetIndex(0);

    $file_name = '下载的文件名称';//设置文件名称
    // 设置浏览器输出文件头header类型,这里是xlsx格式
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment;filename='.$file_name);
    header('Cache-Control: max-age=0');
    //如果浏览器是IE9,则这里添加下面这句header
    header('Cache-Control: max-age=1');

    //如果您是通过SSL服务于IE,那么可能需要以下内容
    header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); 
    header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
    header('Pragma: public'); // HTTP/1.0

    $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
    $writer->save('php://output');
    exit;
}catch (\PhpOffice\PhpSpreadsheet\Exception $e) {
    exit($e->getMessage());
}

微信截图_20200314121002.png

评论/留言