php ajax文件导出,ThinkPHP5.1使用PHPExcel AJAX方法导出到excel中

ThinkPHP5.1使用PHPExcel AJAX方法导出到excel中

作者:PHPYuan 时间:2018-06-15 23:40:20

一、下载PHPExcel后把它放在extend目录下就行了(不需要建子目录)。【没有PHPExcel的留言我统一发】

二、在common.php新建 function exportExcel($data,$type){}方法。里面的具体的过程我就写下面了。

$objPHPExcel=new \PHPExcel();

$objPHPExcel->getProperties()->setCreator('BerryHu') //作者

->setLastModifiedBy('BerryHu') //最后更改

->setTitle('Office 2007 XLSX Document') //文档标题

->setSubject('Office 2007 XLSX Document') //文档主题

->setDescription('Document for Office 2007 XLSX, generated using PHP classes.') //描述信息

->setKeywords('office 2007 openxml php') //文档关键字

->setCategory('Result file');//文档分类

$head = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');

$tableheader = $type['title'];

for ($i=0; $i < count($tableheader); $i++) {

$k = $i + 1;//这里因为我的数组键值是从1开始的

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("$head[$i]1","$tableheader[$k]");

//宽度自动

$objPHPExcel->getActiveSheet()->getColumnDimension("$head[$i]")->setAutoSize(true);

}

//设置宽度

// $objPHPExcel->getActiveSheet()->getColumnDimension(’D’)->setWidth(12);

//填充表格信息

for ($i=2; $i <= count($data) + 1; $i++) {

$j = 0 ;

foreach ($data[$i - 2] as $key => $value) {

$objPHPExcel->setActiveSheetIndex(0)

->setCellValue("$head[$j]$i", "$value");

$j++;

}

}

$table=$type['name'];

$objPHPExcel->getActiveSheet()->setTitle($table);

$objPHPExcel->setActiveSheetIndex(0);

// $filename=urlencode($table);

$filename=$table;

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');

header('Cache-Control: max-age=0');

$objWriter= \PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');

$filePath = 'excel/'.$filename.'.xlsx';

$objWriter->save($filePath);

$response = array(

'success' => true,

'url' => $filePath

);

// $objWriter->save('php://output');

return $response;

【注意点】

宽度自动那段代码经我这测试不能实现全部的。如需对宽度有要求的可以自己设置。代码都在上面的注释里。

我这里$objWriter->save($filePath);中的$filePath是保存的路径。返回的也是路径,最后前端接收到路径,通过

window.location.href='/' +data.url; 就能直接下载了。

一般通过地址栏导出excel都是$objWriter->save('php://output'); 而AJAX则需要先保存,然后在把保存的路径给返回,

这样就能通过ajax导出了。

分享到:

>> 下一篇:wuzhicms注入 (2018-06-15 23:40)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值