1.ajax和phpexcel怎么进行传输?
ajax前后端传输的时候,前端给值,后端通过传来的id进行下载。如果下载不了,你可以看一下你返回给前端的值,如果是乱码,那就是有值,但是ajax不能解析而已。
这时候会发现你是用
$PHPWriter->save("php://output");
输出的这个文件。
因为你是前后端通过ajax,所以当然不能用output来输出了。这个时候我们要把该excel文件保存到一个地方,然后再返回给前端那个地方的地址,让他去下载。
比如:
function saveExcelToLocalFile($objWriter,$filename){ // make sure you have permission to write to directory // $down_dir = ROOT_PATH . 'public/static' . DS . 'downexcel/';//存放在当前目录的upload文件夹下 $down_dir = ROOT_PATH . 'public/static' . DS . 'downexcel/';//存放在当前目录的upload文件夹下 $filePath = $down_dir.$filename.'.xlsx'; $objWriter->save($filePath); $filePath='http://你的网址/static/downexcel/'.$filename.'.xlsx'; return $filePath; } //返回已经存好的文件目录地址提供下载 $objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel); $response = array( 'success' => true, 'url' => saveExcelToLocalFile($objWriter,$filename) ); echo json_encode($response); exit();
2.下载后,显示文件可能被破坏或者后缀名不.... 打不开文件?
在你写的头文件前边添加:
ob_end_clean(); ob_start();
如果还是打不开,那你试试在其他电脑或者你手机,能不能把那个文件夹打开。如果可以,请把你电脑的excel工具卸载,安装一个新的!(这个是最气的,我tm弄了三个小时的代码,百度了所有的兼容,竟然是软件的问题)