方法如下:
<form action="{:U('Home/Index/xls')}" method="post"> <table border="1"> <tr> <td> <input type="text" disabled name="data[0][1]" value="id"> </td> <td> <input type="text" disabled name="data[0][2]" value="username"></td> <td> <input type="text" disabled name="data[0][3]" value="password"></td> <td> <input type="text" disabled name="data[0][4]" value="address"></td> </tr> <foreach name="info" item ="vo"> <tr> <td> <input type="text" name="data[{$key+1}][1]" value="{$vo['id']}"></td> <td> <input type="text" name="data[{$key+1}][2]" value="{$vo['username']}"></td> <td> <input type="text" name="data[{$key+1}][3]" value="{$vo['password']}"></td> <td> <input type="text" name="data[{$key+1}][4]" value="{$vo['address']}"></td> </tr> </foreach> </table> <input type="submit" value="生成xls格式表格"> </form>
public function xls(){ if(IS_POST){ $data=I('post.data'); $count=count($data); create_xls($count,$data); }else{ } }
function create_xls($count,$data){ $count=count($data)+1; vendor("PHPExcel.PHPExcel"); vendor("PHPExcel.PHPExcel.Writer.Excel2007"); vendor("PHPExcel.PHPExcel.Worksheet.Drawing"); $objPHPExcel = new \PHPExcel(); $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel); $objActSheet = $objPHPExcel->getActiveSheet(); // 水平居中(位置很重要,建议在最初始位置) $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1:E'.$count)->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objActSheet->getStyle("A1:E1")->getFont()->setName("微软雅黑")->setSize(14)->setBold(true);//设置单元格范围的字体、字体大小、加粗 $objActSheet->getStyle("A2:IE".$count)->getFont()->setName("微软雅黑")->setSize(10);//设置单元格范围的字体、字体大小、加粗 $objActSheet->setCellValue('A1', 'id'); $objActSheet->setCellValue('B1', '姓名'); $objActSheet->setCellValue('C1', '密码'); $objActSheet->setCellValue('E1', '年龄'); $objActSheet->setCellValue('D1', '住址'); // 设置个表格宽度 $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(30); $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(40); // 垂直居中 $objPHPExcel->getActiveSheet()->getStyle('A1:E'.$count)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); // 设置页面边距为0.5厘米 (1英寸 = 2.54厘米) $margin = 1.78 / 2.54; //phpexcel 中是按英寸来计算的,所以这里换算了一下 $marginright = 1 / 2.54; //phpexcel 中是按英寸来计算的,所以这里换算了一下 //$pageMargins->setTop($margin); //上边距 //$pageMargins->setBottom($margin); //下 $objPHPExcel->getActiveSheet()->getPageMargins()->setLeft($margin); //左 $objPHPExcel->getActiveSheet()->getPageMargins()->setRight($marginright); //右 //添加边框 $objPHPExcel->getActiveSheet()->getStyle('A1:E'.$count)->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN ); //导出格式 $i=1; foreach ($data as $k => $v) { $k += 1; $objActSheet->setCellValue('A' . $k,$i ); $objActSheet->setCellValue('B' . $k, $v['1']); $objActSheet->setCellValue('C' . $k, $v['2']); $objActSheet->setCellValue('D' . $k, $v['3']); $objActSheet->setCellValue('E' . $k, $v['4']); // 表格高度 $objActSheet->getRowDimension($k)->setRowHeight(40); $i++; } $fileName = '用户表信息表'; $date = date("Y-m-d", time()); $fileName .= "_{$date}.xls"; $fileName = iconv("utf-8", "gb2312", $fileName); //重命名表 // $objPHPExcel->getActiveSheet()->setTitle('test'); //设置活动单指数到第一个表,所以Excel打开这是第一个表 $objPHPExcel->setActiveSheetIndex(0); header('Content-Type: application/vnd.ms-excel'); header("Content-Disposition: attachment;filename=\"$fileName\""); header('Cache-Control: max-age=0'); $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); //文件通过浏览器下载 // END exit; }
Excel数据
id | 姓名 | 密码 | 住址 | 年龄 |
1 | 271 | xhz1 | 123 | 浙江省杭州市余杭区 |
2 | 272 | xhz2 | 123 | 浙江省杭州市余杭区 |
3 | 273 | xhz3 | 123 | 浙江省杭州市余杭区 |
4 | 274 | xhz4 | 123 | 浙江省杭州市余杭区 |
5 | 275 | xhz5 | 123 | 浙江省杭州市余杭区 |
6 | 276 | xhz6 | 123 | 浙江省杭州市余杭区 |
7 | 277 | xhz7 | 123 | 浙江省杭州市余杭区 |
8 | 278 | xhz8 | 123 | 浙江省杭州市余杭区 |
9 | 279 | xhz9 | 123 | 浙江省杭州市余杭区 |
10 | 280 | xhz10 | 123 | 浙江省杭州市余杭区 |