使用PHPExcel将数据从mysql导出到xls

时间:2014-05-24 22:02:42

标签: php mysql phpexcel

我想将我的mysql数据库中的一些数据导出到excel文件。我正在使用PHPExcel库来完成它。 我有这样的代码:

include 'PHPExcel/PHPExcel.php';
include 'config.php' //here I connect to db
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();
$r = mysql_fetch_array(mysql_query("SELECT * FROM Users WHERE ID=6"));
..
Some cells formatting here
..
$sheet->SetCellValue('A1', "NUMER ZLECENIA: ".$r["ID"]);
..
Rest of formatting
..
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit;

现在,当我运行该文件时,文件下载成功,但是当我尝试打开它时,我看到错误:"文件的文件格式与其扩展名不同。&#34 ;,但是当我删除。$ r [" ID"]而不是数字时,文件打开就好了。

可能是由错误的编码引起的,在db i中编码UTF-8,但ID只是编号。我不知道为什么它不起作用。

2 个答案:

答案 0 :(得分:0)

$r["ID"]确实存在吗?它是$r["id"]吗?

在文本编辑器中打开文件并查找明显的错误消息......但我认为您的列名可能是小写的。

请注意charset=UTF-8没有意义,它适用于发送到浏览器的内容;该文件未在浏览器中打开,但在MS Excel中,它不知道发送到Web浏览器的字符集

答案 1 :(得分:0)

我试过并找到了有效的方法:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
ob_end_clean();
header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit;