PHPExcel文件格式或扩展名无效

Orc*_*cun 4 file-format xlsx phpexcel

我在excel文件中使用phpexcel导出我的查询; 但是在我创建文件(xslx格式)之后,我无法在excel中打开我的文件.它给出"文件格式或扩展名无效.验证文件是否已损坏,文件扩展名是否与文件的文件格式匹配"错误.当我在texteditor中打开文件时(我的是npp)我看到我的php文件的css代码和我的html代码的一部分.我的代码就是这样;

if( ! empty($_POST['export'])){
  $query = "SELECT * FROM asd ORDER BY asdf LIMIT 10";
  $headings = array('Timestamp', 'h1','h2');
      require 'Classes/PHPExcel.php';

  $objPHPExcel = new PHPExcel();
  $objPHPExcel->getActiveSheet()->setTitle('List of Users');

  $rowNumber = 1;
  $col = 'A';
  foreach($headings as $heading) {
    $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading);
    $col++;
  }

  $rowNumber = 2;
  while ($row = mysql_fetch_row($result)) {
    $col = 'A';
    foreach($row as $cell) {
        $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell); 
        $col++;
    }
    $rowNumber++;
  }

$objPHPExcel->getActiveSheet()->freezePane('A2');

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

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="userList.xlsx"');
header("Content-Transfer-Encoding: binary ");
//ob_end_clean();
//header('Cache-Control: max-age=0');

$objWriter->save('php://output');
exit();
}
Run Code Online (Sandbox Code Playgroud)

我被困了请求帮助.谢谢.

Mar*_*ker 14

由于手册中描述....如果任何其他被输出到浏览器,这会破坏输出文件.

在文本编辑器中打开文件,并在输出的开头查找前导或尾随空格字符(空格,制表符,换行符)或BOM标记,或者查找内容中任何明显的PHP明文错误消息.这些是导致此问题的最明显原因.一旦识别出虚假字符,请检查脚本以查看生成输出的位置,然后将其删除.

在您的情况下,这意味着输出您的CSS和HTML.

编辑

xlsx是OfficeOpenXML Excel2007文件的扩展名,不适用于BIFF 8 xls文件....在标题(mime类型和文件扩展名)和Writer中保持一致

或者:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="userList.xls"');
Run Code Online (Sandbox Code Playgroud)

要么

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="userList.xlsx"');
Run Code Online (Sandbox Code Playgroud)

  • 在标题保存一天之前,在一行中添加`ob_clean();`.我在制作的文件中有一个\n但是我不知道它为什么存在. (4认同)