thinkphp5 导出excel

先下载PHPExcel,网上有很多,下载后,放到vendor文件夹下
前端代码:在这里插入图片描述
,然后在建个控制器
public function out()
{

    //导出
    $path = dirname(__FILE__); //找到当前脚本所在路径
    vendor("PHPExcel.Classes.PHPExcel");
    vendor("PHPExcel.PHPExcel.Writer.IWriter");
    vendor("PHPExcel.PHPExcel.Writer.Abstract");
    vendor("PHPExcel.PHPExcel.Writer.Excel5");
    vendor("PHPExcel.PHPExcel.Writer.Excel2007");
    vendor("PHPExcel.PHPExcel.IOFactory");
    $objPHPExcel = new \PHPExcel();
    $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);


    // 实例化完了之后就先把数据库里面的数据查出来
    $sql =Db::table('bruglist a,total b')
        ->where('a.ypname=b.name')
        ->where('code',1)
        ->group('ypname')
        ->select();

    // 设置表头信息
    $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A1', '序号')
        ->setCellValue('B1', '药品通用名	')
        ->setCellValue('C1', '规格')
        ->setCellValue('D1', '生产厂家')
        ->setCellValue('E1', '产地')
        ->setCellValue('F1', '药品分类')
        ->setCellValue('G1', '库存')
        ->setCellValue('H1', '批发价')
        ->setCellValue('I1', '金额')
        ->setCellValue('J1', '批发总价')
        ->setCellValue('K1', '金额总价');

    /*--------------开始从数据库提取信息插入Excel表中------------------*/

    $i=2;  //定义一个i变量,目的是在循环输出数据是控制行数
    $count = count($sql);  //计算有多少条数据
    for ($i = 2; $i <= $count+1; $i++) {
        $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $sql[$i-2]['id']);
        $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, $sql[$i-2]['ypname']);
        $objPHPExcel->getActiveSheet()->setCellValue('C' . $i, $sql[$i-2]['guige']);
        $objPHPExcel->getActiveSheet()->setCellValue('D' . $i, $sql[$i-2]['manufactor']);
        $objPHPExcel->getActiveSheet()->setCellValue('E' . $i, $sql[$i-2]['product']);
        $objPHPExcel->getActiveSheet()->setCellValue('F' . $i, $sql[$i-2]['fenlei']);
        $objPHPExcel->getActiveSheet()->setCellValue('G' . $i, $sql[$i-2]['ber']);
        $objPHPExcel->getActiveSheet()->setCellValue('H' . $i, $sql[$i-2]['wholesale']);
        $objPHPExcel->getActiveSheet()->setCellValue('I' . $i, $sql[$i-2]['money']);
        $objPHPExcel->getActiveSheet()->setCellValue('J' . $i, $sql[$i-2]['pfmoney']);
        $objPHPExcel->getActiveSheet()->setCellValue('K' . $i, $sql[$i-2]['ypmoney']);
    }


    /*--------------下面是设置其他信息------------------*/

    $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="药品总库存.xlsx"');
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    $PHPWriter->save("php://output"); //表示在$path路径下面生成demo.xlsx文件

}
然后ok ,在控制里面设置要导出的字段,然后就可以导出了

猜你喜欢

转载自blog.csdn.net/gongjiang1/article/details/85125755