Thinkphp PHPExcel table数据生成Excel

来源:互联网 发布:mac os操作系统教程 编辑:程序博客网 时间:2024/06/05 00:50
方法如下:
<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姓名密码住址年龄1271xhz1123浙江省杭州市余杭区2272xhz2123浙江省杭州市余杭区3273xhz3123浙江省杭州市余杭区4274xhz4123浙江省杭州市余杭区5275xhz5123浙江省杭州市余杭区6276xhz6123浙江省杭州市余杭区7277xhz7123浙江省杭州市余杭区8278xhz8123浙江省杭州市余杭区9279xhz9123浙江省杭州市余杭区10280xhz10123浙江省杭州市余杭区