set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
include 'PHPExcel.php';
include 'PHPExcel/IOFactory.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw");
$objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw");
$objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document");
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.");
$objPHPExcel->getProperties()->setKeywords("office 2007 openxml php");
$objPHPExcel->getProperties()->setCategory("Test result file");
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!');
$objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
//以下为保存
//下面两句直接就保存到当前目录了
$outputFileName = "output.xlsx";
$objWriter->save($outputFileName);
//而我想在保存前提示用户自己选择路径,就采用了如下方法(摘自网上),可是他直接输出到浏览器了,不没有提示保存
header("Content-Type: application/force-download");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
11 个解决方案
#1
帮顶!
#2
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/download");
header("Content-Disposition: attachment;filename=$outputFileName");
header("Content-Transfer-Encoding: binary ");
#3
主要是这句
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
改
header("Content-Disposition: attachment;filename=$outputFileName");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
改
header("Content-Disposition: attachment;filename=$outputFileName");
#4
我按照你说的方式尝试了,还是直接在浏览器页面输出,并没有提示保存?
是不是还有其他的参数需要配置??
是不是还有其他的参数需要配置??
#5
没问题啊,你原本的代码就可以
只是第二行会出错
set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
改成下面就可以了
//set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
只是第二行会出错
set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
改成下面就可以了
//set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
#6
顶
#7
我发现我的问题在于使用的Zend Framework,
我做过一个实验,使用非Zend,自己随便写个PHP代码则可以正常保存,而使用zend时,在Controller中写同样的代码则不行?是不是Zend框架对于header做了什么处理??
我做过一个实验,使用非Zend,自己随便写个PHP代码则可以正常保存,而使用zend时,在Controller中写同样的代码则不行?是不是Zend框架对于header做了什么处理??
#8
帮顶一下
#9
感谢3楼,问题解决了
谢谢
谢谢
#10
追问:我按照的3楼的方法选择保存路径是可以的;但有一问题,它把整个页面的信息都导出来了,$objWriter->save('my-test.xls')要之前sava的文件。求助
#11
唉,问题解决了,也说说经验啊。
#1
帮顶!
#2
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/download");
header("Content-Disposition: attachment;filename=$outputFileName");
header("Content-Transfer-Encoding: binary ");
#3
主要是这句
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
改
header("Content-Disposition: attachment;filename=$outputFileName");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
改
header("Content-Disposition: attachment;filename=$outputFileName");
#4
我按照你说的方式尝试了,还是直接在浏览器页面输出,并没有提示保存?
是不是还有其他的参数需要配置??
是不是还有其他的参数需要配置??
#5
没问题啊,你原本的代码就可以
只是第二行会出错
set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
改成下面就可以了
//set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
只是第二行会出错
set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
改成下面就可以了
//set_include_path(get_include_path() . PATH_SEPARATOR . LIB_DIR.DIRECTORY_SEPARATOR."PHPExcel".DIRECTORY_SEPARATOR."Classes");
#6
顶
#7
我发现我的问题在于使用的Zend Framework,
我做过一个实验,使用非Zend,自己随便写个PHP代码则可以正常保存,而使用zend时,在Controller中写同样的代码则不行?是不是Zend框架对于header做了什么处理??
我做过一个实验,使用非Zend,自己随便写个PHP代码则可以正常保存,而使用zend时,在Controller中写同样的代码则不行?是不是Zend框架对于header做了什么处理??
#8
帮顶一下
#9
感谢3楼,问题解决了
谢谢
谢谢
#10
追问:我按照的3楼的方法选择保存路径是可以的;但有一问题,它把整个页面的信息都导出来了,$objWriter->save('my-test.xls')要之前sava的文件。求助
#11
唉,问题解决了,也说说经验啊。