怎么在PHPExcel保存时选择路径?

时间:2021-07-07 07:12:18
请问使用PHPExcel导出Excel是如何可以自己选择保存路径??

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");

#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");

#6


#7


我发现我的问题在于使用的Zend Framework,

我做过一个实验,使用非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");

#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");

#6


#7


我发现我的问题在于使用的Zend Framework,

我做过一个实验,使用非Zend,自己随便写个PHP代码则可以正常保存,而使用zend时,在Controller中写同样的代码则不行?是不是Zend框架对于header做了什么处理??

#8


帮顶一下

#9


感谢3楼,问题解决了
谢谢

#10


追问:我按照的3楼的方法选择保存路径是可以的;但有一问题,它把整个页面的信息都导出来了,$objWriter->save('my-test.xls')要之前sava的文件。求助

#11


唉,问题解决了,也说说经验啊。