我在Laravel中有一个功能,允许用户从他们的应用程序中导出报告。到目前为止,导出.csv工作正常,但是当他们提供导出到.xlsx的选项时,它会抛出一个关于扩展无效的错误。
以下是要导出的函数。
public function export($fileName, $data, $fileType) {
$xls = new PHPExcel();
$xls->setActiveSheetIndex(0);
if (count($data) > 0) {
$acols = array_keys($data[0]->toArray());
$xls->getActiveSheet()->fromArray($acols, NULL, 'A1');
$xls->getActiveSheet()->fromArray($data->toArray(), NULL, 'A2');
switch ($fileType) {
case 'csv':
$objWriter = new PHPExcel_Writer_CSV($xls);
break;
case 'xlsx':
$objWriter = new PHPExcel_Writer_Excel2007($xls);
$objWriter->setOffice2003Compatibility(true);
break;
case 'html':
$objWriter = new PHPExcel_Writer_HTML($xls);
return $objWriter->generateSheetData();
}
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/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=$fileName");
header("Content-Transfer-Encoding: binary ");
$objWriter->save('php://output');
return;
}
return Redirect::back();
}
答案 0 :(得分:0)
此篡改是由于代码文件中的空格/空格导致传入Excel的数据损坏。你必须按文件调试每个角落文件,以确定是否有任何不需要的空间。它可以在文件的开头,即
之前如果使用linux,此命令可能有助于查找正确的文件
find . "*" | xargs grep -il \ \<\?php >> php.txt