Tp5.1 导出excel 没反应 vue框架 不下载excel文件

第一步:安装phpexcel类库

composer  require phpoffice/phpexcel

第二步:模型引入类库

use PHPExcel;
use PHPExcel_IOFactory;

第三步:模型封装方法

public static function exportToExcel($list)
{
    # 此为测试数据,正式数据需要控制器传入$list参数
    $list = [
        ['id'=>1, 'name'=>'苹果', 'num'=>100],
        ['id'=>2, 'name'=>'梨', 'num'=>200],
        ['id'=>3, 'name'=>'香蕉', 'num'=>350],
        ['id'=>4, 'name'=>'菠萝', 'num'=>250],
    ];

    $objPHPExcel = new \PHPExcel();
    // 设置sheet
    $objPHPExcel->setActiveSheetIndex(0);
    // 设置列的宽度
    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);

    // 设置表头
    $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'ID');
    $objPHPExcel->getActiveSheet()->SetCellValue('B1', '水果名称');
    $objPHPExcel->getActiveSheet()->SetCellValue('C1', '数量');

    //存取数据
    $num = 2;
    foreach ($list as $k => $v) {
        $objPHPExcel->getActiveSheet()->SetCellValue('A' . $num, $v['id']);
        $objPHPExcel->getActiveSheet()->SetCellValue('B' . $num, $v['name']);
        $objPHPExcel->getActiveSheet()->SetCellValue('C' . $num, $v['num']);
        $num++;
    }
    // 文件名称
    $fileName = "水果库存" . date('Y-m-d', time()) . rand(1, 1000);
    $xlsName = iconv('utf-8', 'gb2312', $fileName);
    // 设置工作表名
    $objPHPExcel->getActiveSheet()->setTitle('sheet');
    //下载 excel5与excel2007
    $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
    ob_end_clean();     // 清除缓冲区,避免乱码
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl;charset=UTF-8");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");
    header("Content-Disposition:attachment;filename=" . $xlsName . ".xls");
    header("Content-Transfer-Encoding:binary");
    $objWriter->save("php://output");
    exit();
}

第四步:控制器调用模型方法,并传参即可

常见问题:有时点击导出没反应

导出不能通过ajax等方式请求接口调用,只能通过a标签,新开窗口 target="_blank"

<a :href= "此处为导出方法的路由地址" target="_blank">导出</a>

备注:适用于vue element_ui,

<a :href= toExportUrl target="_blank"><el-button type="primary" icon="" style="float:right;">导出</el-button></a>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值