使用PHPExcel导出到xlsx - php

我正在使用PHPEXxcel导出使用MYSQL及其类似方式生成的HTML表。

<?php $query = "SELECT `Firstname`,`Lastname`,`Branch`,`Gender`,`Mobileno`, `Email`  
      FROM `student_details` WHERE Branch IN ('$branch') and `Year`='$year' 
         and Tenthresult > '$tenth' and 
      Twelthresult > '$twelth' and (CGPA > '$cgpa' || CGPA = '$cgpa')";  

$result = mysql_query($query);
confirm_query($result);
$objPHPExcel = new PHPExcel(); 
$objPHPExcel->setActiveSheetIndex(0); 

$rowCount = 1; 
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount,'Firstname');
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount,'Lastname');
$objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount,'Branch');
$objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount,'Gender');
$objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount,'Mobileno');
$objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount,'Email');

while($row = mysql_fetch_array($result)){ 
    $rowCount++;
    $objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['0']);
    $objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['1']);
    $objPHPExcel->getActiveSheet()->SetCellValue('C'.$rowCount, $row['2']);
    $objPHPExcel->getActiveSheet()->SetCellValue('D'.$rowCount, $row['3']);
    $objPHPExcel->getActiveSheet()->SetCellValue('E'.$rowCount, $row['4']);
    $objPHPExcel->getActiveSheet()->SetCellValue('F'.$rowCount, $row['5']);
} 

$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); 
$objWriter->save('some_excel_file.xlsx'); 
?>

它可以正常工作,但是它将xlsx文件保存在根文件夹中,而不会向用户显示任何已下载文件的迹象。
当我单击一个按钮时,此代码运行。现在,是否可以像下载邮件附件一样让其下载,并在前端向用户显示其下载位置。

我尝试使用

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0'); 

有了这个,我得到了上面想要的东西,但是打开时下载的xls文件显示
讯息
“您要打开的文件'filename'的格式与指定的扩展名..... etc不同。要立即打开吗?

在打开时,它包含整个HTML页或仅包含空白页...
有谁能够帮我..?

参考方案

试算表101

有许多不同的电子表格文件格式,每种都有自己不同的文件扩展名,并且可以使用不同的mime类型发送到Web浏览器。这些在PHPExcel文档中进行了描述,并且在PHPExcel中每个都有其自己的不同Writer。您不匹配两种不同的格式

BIFF格式

由Microsoft Excel在版本95和2003 File之间使用
扩展名:xls
PHPEXcel编写器:PHPExcel_Writer_Excel5
MIME类型:application / vnd.ms-excel

OfficeOpenXML格式

从2007版开始由Microsoft Excel使用
文件扩展名:xlsx
PHPEXcel编写器:PHPExcel_Writer_Excel2007
MIME类型:application / vnd.openxmlformats-officedocument.spreadsheetml.sheet

不要混搭:如果您这样做,则Excel将(并且有理由地)抱怨。如果要使用BIFF文件,请使用PHPExcel的BIFF Writer(Excel5),文件扩展名为.xls以及上面针对BIFF格式列出的mime类型。如果需要OfficeOpenXML文件,请使用PHPExcel的Excel2007 Writer,文件扩展名.xlsx和上面列出的OfficeOpenXML的mime类型。

编辑

请注意,PHPExcel发行版随附的示例包括01simple-download-xls.php和01simple-download-xlsx.php来演示您想要的内容

PHP:对数组排序 - php

请如何排序以下数组Array ( 'ben' => 1.0, 'ken' => 2.0, 'sam' => 1.5 ) 至Array ( 'ken' => 2.0, 'sam' => 1.5, 'ben' =&…

PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00�…

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…

php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…

PHP PDO组按列名称查询结果 - php

以下PDO查询返回以下结果:$db = new PDO('....'); $sth = $db->prepare('SELECT ...'); 结果如下: name curso ABC stack CDE stack FGH stack IJK stack LMN overflow OPQ overflow RS…