我正在使用PHPExcel生成excel文件(疯狂吧?),我从数据库获取的信息,就是每当我创建文件时它保存在服务器中然后我只是发送一个链接到该文件到用户以便他可以访问它。
我怀疑这是正确的做法,我正在寻找的只是将文件发送到浏览器而不将其保存在服务器上。
如何直接向用户输出EXCEL文件而不在本地存储?
代码:
$fileName = "Request_" . $idRequest . "_Update.xls";
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
$objWriter->save($fileName);
$objPHPExcel = PHPExcel_IOFactory::load($fileName);
echo json_encode(array(
"ExitCode" => 0,
"Message" => "Success",
"data" => $request,
"File" => "../reports/$fileName"
));
我收到File
来电时收到$.ajax
,只需将其添加到锚标记中即可:
$.ajax({
...
success : function(response){
$('#container').append('<a href="'+response.File+'">Here is your file</a>
}
答案 0 :(得分:2)
检查一下。
// reset all output buffering
while (ob_get_level() > 0) {
ob_end_clean();
}
header('Content-type: application/ms-excel');
header('Content-Disposition: inline; attachment; filename='.$filename);
// we can't send any more headers after this
flush();
$excel = new PhpExcel();
$excel->setActiveSheetIndex(0);
$sheet = $excel->getActiveSheet();
// in this example, $data was an array in the format row => value
// data structure is not relevant to issue
foreach ($data as $key => $value) {
// add data to sheet here
$sheet->SetCellValue('A' . $key, $value);
// etc...
}
$writer = new PHPExcel_Writer($excel);
// push to browser
$writer->save('php://output');
答案 1 :(得分:1)
您可以发送
header("Content-Disposition: attachment; filename=\"file.xls\"");
强制下载,然后
header("Content-type:application/vnd.ms-excel");
说你正在发送excel文件的浏览器,最后只是将文件作为html table
回显:
<?php
header("Content-Disposition: attachment; filename=\"file.xls\"");
header("Content-type:application/vnd.ms-excel");
echo "<html><table>...</table></html>"; // your table data here..
?>
Excel可以使用.html
打开<table>
个文件,这样就不会出现任何问题。
答案 2 :(得分:1)
对this question的已接受响应显示了如何处理成功响应提供下载文件,或由js处理的失败响应(例如,在当前html页面中显示)而没有mime类型问题