由于PHPExcel已经不再维护,PhpSpreadsheet是PHPExcel的下一个版本。PhpSpreadsheet是一个用纯PHP编写的库,并引入了命名空间,PSR规范等。这里使用PhpSpreadsheet库来实现导出表格的方法。这里表格导出实现了 单元格合并,居中、单元格宽度等设置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | <?php require_once __DIR__. '/vendor/autoload.php' ; $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet(); $objActSheet = $spreadsheet ->getActiveSheet(); //获取当前活动sheet对象 //--往单元格写入数据,可以使用 setCellValue 或 setCellValueByColumnAndRow 方法,注意 参数格式不一样 //简单输出几个数据,真实环境中需要遍历循环输出的数据 $objActSheet ->setCellValue( 'A1' , '单号' )->mergeCells( 'A1:A2' ); //合并单元格 $objActSheet ->setCellValue( 'B1' , '出行人' )->mergeCells( 'B1:D1' ); //合并单元格 $objActSheet ->setCellValue( 'B2' , '姓名' ); $objActSheet ->setCellValue( 'C2' , '年龄' ); $objActSheet ->setCellValue( 'D2' , '性别' ); $objActSheet ->setCellValue( 'E1' , '时间' )->mergeCells( 'E1:E2' ); //合并单元格 $objActSheet ->setCellValue( 'A3' , '201512010001' ); $objActSheet ->setCellValue( 'B3' , '小张' ); $objActSheet ->setCellValue( 'C3' , '28' ); $objActSheet ->setCellValue( 'D3' , '男' ); $objActSheet ->setCellValue( 'E3' , '2015-12-01' ); $objActSheet ->setCellValue( 'A4' , '201512010002' ); $objActSheet ->setCellValue( 'B4' , '小妹' ); $objActSheet ->setCellValue( 'C4' , '24' ); $objActSheet ->setCellValue( 'D4' , '女' ); $objActSheet ->setCellValue( 'E4' , '2015-12-02' ); $objActSheet ->setCellValueByColumnAndRow(1,5, '201512010003' ); $objActSheet ->setCellValueByColumnAndRow(2,5, '张三' ); $objActSheet ->setCellValueByColumnAndRow(3,5, '26' ); $objActSheet ->setCellValueByColumnAndRow(4,5, '男' ); $objActSheet ->setCellValueByColumnAndRow(5,5, '2016-11-10' ); $objStyleA1 = $objActSheet ->getStyle( 'A1' ); //设置单元格内容的数字格式,原始内容全部显示出来 $objStyleA1 ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); //设置水平居中,垂直居中 $objStyleA1 ->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); $objStyleA1 ->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //从指定的单元格复制样式信息. $objActSheet ->duplicateStyle( $objStyleA1 , 'A1:E5' ); //设置单元格的宽度 $objActSheet ->getColumnDimension( 'A' )->setWidth(25); $objActSheet ->getColumnDimension( 'A' )->setWidth(10); $objActSheet ->getColumnDimension( 'A' )->setWidth(10); $objActSheet ->getColumnDimension( 'A' )->setWidth(10); $objActSheet ->getColumnDimension( 'A' )->setWidth(16); header( "Content-Type: application/force-download" ); header( "Content-Type: application/octet-stream" ); header( "Content-Type: application/download" ); header( 'Content-Disposition:inline;filename="demo1.xlsx"' ); header( "Content-Transfer-Encoding: binary" ); 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: must-revalidate, post-check=0, pre-check=0" ); header( "Pragma: no-cache" ); $objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter( $spreadsheet , 'Xlsx' ); $objWriter ->save( 'php://output' ); |
友情提示:垃圾评论一律封号...