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。 你看到错误;)