Excel无法打开由XLSXWriter创build的文件

我正在使用https://github.com/mk-j/PHP_XLSXWriter库。

test.php的

<form action="test.php" method="post"> <input type="submit" name="submit2" value="Export" /> </form> <?php if(isset($_POST['submit2']) && ($_POST['submit2'] == 'Export')) { include_once('download.php'); } ?> 

download.php ( https://github.com/mk-j/PHP_XLSXWriter/blob/master/example.php )

 <?php include('./PHP_XLSXWriter-master/xlsxwriter.class.php'); ini_set('display_errors', 0); ini_set('log_errors', 1); error_reporting(E_ALL & ~E_NOTICE); $filename = "example.xlsx"; header('Content-disposition: attachment; filename="'.XLSXWriter::sanitize_filename($filename).'"'); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); $header = array( 'year'=>'string', 'month'=>'string', 'amount'=>'money', 'first_event'=>'datetime', 'second_event'=>'date', ); $data1 = array( array('2003','1','-50.5','2010-01-01 23:00:00','2012-12-31 23:00:00'), array('2003','=B2', '23.5','2010-01-01 00:00:00','2012-12-31 00:00:00'), ); $data2 = array( array('2003','01','343.12'), array('2003','02','345.12'), ); $writer = new XLSXWriter(); $writer->setAuthor('Some Author'); $writer->writeSheet($data1,'Sheet1',$header); ?> $writer->writeSheet($data2,'Sheet2'); $writer->writeToStdOut(); ?> 

当我单独运行download.php时,它是可以的。
在这里输入图像说明

当我运行我的test.php
在这里输入图像说明

我在写什么错? 有人能帮我吗?
我坚持了很多小时!

检查您的HTTP响应例如与提琴手。

你会发现你在XLSX内容的前面发送HTML <form...这当然不是一个有效的电子表格文件格式。

writeToStdOut()调用之前一定没有输出,例如,你的文件应该是这样的:

 <?php if(isset($_POST['submit2']) && ($_POST['submit2'] == 'Export')) { // this is an export, send the file require_once('download.php'); exit; // do not send anything else after the XLSX file } else { // not an export, show the form ?> <form action="test.php" method="post"> <input type="submit" name="submit2" value="Export" /> </form> <?php } 

用记事本打开文件.xlsx。 你看到错误;)