Thinkphp5.1 Export (no distortion)

1, js jump Do not use ajax, or garbled
html if the ajax, must lead to the return of data, and the header output browser conflict, resulting in output can not excel, and garbled, use url direct access to
2, Export instance
html
< a class = "layui-btn layui -btn-normal" οnclick = "exportExcele ()"> export Excel1 </ A>
JS
function exportExcele () {
var regstartdate = $ ( "# regstartdate") Val ();.
var regenddate . = $ ( "# regenddate") Val ();
the window.location = '? Lawyer / index / exportExcelList regstartdate =' + + regstartdate '& regenddate =' + regenddate;
}
Controller
public function exportExcelList (the Request Request $) {
header ( "the Content-the Type: text / HTML; charset = UTF-. 8");
// start time
$ todaystart = $ request-> param ( 'regstartdate');
d a Y s t a r t = s t r t O t i m e ( daystart = strtotime( todaystart,time());
d a t a s t a r t = d a t e ( Y m d 00 : 00 : 0 0 , datastart = date('Y-m-d 00:00:00', DAY, START) ;;
// end time
$ todayend = $ request-> param (
d a y e n d = s t r t o t i m e ( dayend = strtotime( todayend,time());
d a t e e n d = d a t e ( Y m d 23 : 59 : 5 9 , dateend = date('Y-m-d 23:59:59', Dayend);

    $wheres[] = ['A.created','between',[$datastart,$dateend]];
    $wheres[] = ['B.mt','=',1];
    $wheres[] = ['A.user_group_id','IN','2,4,5,7,8'];
    $listorder['A.id'] = 'desc';
    $expTableData = Db::table('zf_user')->alias('A')->leftJoin('zf_member B', 'A.id = B.user_id')
        ->field('created,nickname,ipaddr,uguide,gulabels,comefrom_1,comefrom_2,channel,memo,assess,lawyerid')
        ->where($wheres)->order($listorder)
     //   ->fetchSql(true)
        ->select();//'A.user_group_id'=>5,'B.mt'=>1     ['A.user_group_id'=>[4,5],'B.mt'=>1]


    $path = dirname(__FILE__); //找到当前脚本所在路径
    include ROOT_PATH . 'include' . DS . 'PHPExcel-1.8.0' . DS . 'PHPExcel.php';
    $objPHPExcel = new \PHPExcel();
    $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
    $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A1', '时间')
        ->setCellValue('B1', '称呼')
        ->setCellValue('C1', '地址')
        ->setCellValue('D1', '1')
        ->setCellValue('E1', '2')
        ->setCellValue('F1', '3')
        ->setCellValue('G1', '4')
        ->setCellValue('H1', '5')
        ->setCellValue('I1', '6')
        ->setCellValue('I1', '7')
        ->setCellValue('J1', '8');
    $i=2;  //定义一个i变量,目的是在循环输出数据是控制行数
    $count = count($expTableData);  //计算有多少条数据
    for ($i = 2; $i <= $count+1; $i++) {
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $expTableData[$i-2]['created']);
        $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $expTableData[$i-2]['nickname']);
        $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $expTableData[$i-2]['ipaddr']);
        $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $expTableData[$i-2]['uguide']);
        $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $expTableData[$i-2]['gulabels']);
        $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $expTableData[$i-2]['comefrom_1']);
        $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $expTableData[$i-2]['comefrom_2']);
        $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $expTableData[$i-2]['channel']);
        $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $expTableData[$i-2]['memo']);
        $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $expTableData[$i-2]['assess']);
        //获取签约律师人员名单
        $authlawyerarr = Db::table('zf_user')->alias('A')->leftJoin('zf_member B', 'A.id = B.user_id')
            ->field('B.nickname')
            ->where(['A.id'=>$expTableData[$i-2]['lawyerid']])->select();
        $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $authlawyerarr[0]['nickname']);
    }
    $objPHPExcel->getActiveSheet()->setTitle('productaccess');      //设置sheet的名称
    $objPHPExcel->setActiveSheetIndex(0);                   //设置sheet的起始位置
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');   //通过PHPExcel_IOFactory的写函数将上面数据写出来

    $PHPWriter = \PHPExcel_IOFactory::createWriter( $objPHPExcel,"Excel2007");

    header('Content-Disposition: attachment;filename="total.xlsx"');
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件
    exit;
}
Published 58 original articles · won praise 0 · Views 2775

Guess you like

Origin blog.csdn.net/qq_30439399/article/details/102568503