使用PHPExcel导出到xlsx时无法下载文件错误

时间:2014-05-13 02:14:59

标签: php phpexcel xlsx

早上好。

我需要有关将数据导出为XLSX格式的帮助。

我总是收到此消息框错误消息:

<IP Address> - download.phpをダウンロードできません。

其中说无法下载download.php。

另一方面,当我尝试将其更改为XLS格式时,我能够正确下载文件。

这是我的简单代码:

的index.php

<script>
function ExportDataTemplate()
{
    window.location = "download.php";
}

</script>

<input type="button" class="MyButton" value="Data With Template" style="width: 150px;" onClick="ExportDataTemplate();"/>

的download.php

<?php
include 'Classes/PHPExcel.php';
include 'Classes/PHPExcel/IOFactory.php';

error_reporting(E_ALL ^E_NOTICE);

ini_set('memory_limit', -1);
set_time_limit (0) ;

$objReader = PHPExcel_IOFactory::createReader("Excel2007"); 
$objPHPExcel = $objReader->load("Templates/tl_export_xlsx.xlsx");

$objWorksheet = $objPHPExcel->getActiveSheet();
$objPHPExcel->getDefaultStyle()->getFont()->setName('MS Pゴシック')->setSize(10);

$worksheet = $objPHPExcel->setActiveSheetIndex(0);

$newFilename = "TL_Export_". date("YmdHi").".xlsx";

$styleArray = array(
  'borders' => array(
    'allborders' => array(
      'style' => PHPExcel_Style_Border::BORDER_THIN
    )
  )
);

$objPHPExcel->getActiveSheet()->getStyle('A1:C1')->applyFromArray($styleArray);

$worksheet->setCellValueByColumnAndRow(0, 2, "1");
$worksheet->setCellValueByColumnAndRow(1, 2, "Department");
$worksheet->setCellValueByColumnAndRow(2, 2, Team Leader");

unset($styleArray);
ob_clean();

header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header("Content-Disposition: attachment; filename=\"".$newFilename."\"");
header("Cache-Control: max-age=0");
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('php://output');

?>

提前谢谢。

顺便说一句,我使用的是Linux Cent OS, PHPExcel v1.7.6和 PHP 5.3.3

1 个答案:

答案 0 :(得分:1)

您的代码中有简单的拼写错误。这样:

$worksheet->setCellValueByColumnAndRow(2, 2, Team Leader");

应该是这样的:

$worksheet->setCellValueByColumnAndRow(2, 2, "Team Leader");

之后,一切似乎都正常。

修改

因为你有IE 8,你应该尝试解决已知的兼容性问题:

  1. 尝试将Content-Type设为application/vnd.ms-excel
  2. 尝试在Content-Disposition 中设置文件名,不带引号或单引号
  3. 此外,如果您使用javascript(例如window.open)在IE 8中下载XLSX文件,则可能无法下载该文件,因为XLSX在浏览器中被视为“无法显示”。