你指定的PHPExcel生成的是xls格式的文件。是一种电子表格格式,这种格式一般是用excel打开处理的。直接用文本方式显示就是乱码的。但为什么是直接输出这些乱而不是下载呢?是因为你没有给输出指定头信息告诉浏览器输出的内容不是直接显示而是供下载的,浏览器所以浏览器也不懂,它只好老老实实给输出来。你试着在上面那段代码前加上如下内容:
header("Cache-Control: public");
header("Pragma: public");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type:application/download");
header("Content-type:application/vndms-excel");
header("Content-Disposition:attachment;filename=你自己指定或生成文件名xls");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
因为已经输出了,所以不能更改 文件头信息。是执行 header() 的报错,在 php 文件最最最最最开始的地方(php 程序执行的第一行)加一个 ob_start();把缓存打开。就可以解决这个问题
用这个吧:PHPExcel
步骤:
1百度:phpexcel,结果如图所示,点击第一个结果;
2进入官网后,找到右边的download按钮,下载,下载完成的是一个压缩文件,解压放到你的项目目录里,根据个人情况而定;
3因为这里给大家做演示,所以建了一个测试文件,有点基础的都能明白是怎么回事,下面进入代码;
4
//引入PHPExcel库文件(路径根据自己情况)
include '/phpexcel/Classes/PHPExcelphp';
//创建对象
$excel = new PHPExcel();
//Excel表格式,这里简略写了8列
$letter = array('A','B','C','D','E','F','F','G');
//表头数组
$tableheader = array('学号','姓名','性别','年龄','班级');
//填充表头信息
for($i = 0;$i < count($tableheader);$i++) {
$excel->getActiveSheet()->setCellValue("$letter[$i]1","$tableheader[$i]");
}
5
//表格数组
$data = array(
array('1','小王','男','20','100'),
array('2','小李','男','20','101'),
array('3','小张','女','20','102'),
array('4','小赵','女','20','103')
);
//填充表格信息
for ($i = 2;$i <= count($data) + 1;$i++) {
$j = 0;
foreach ($data[$i - 2] as $key=>$value) {
$excel->getActiveSheet()->setCellValue("$letter[$j]$i","$value");
$j++;
}
}
6
//创建Excel输入对象
$write = new PHPExcel_Writer_Excel5($excel);
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/vndms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition:attachment;filename="testdataxls"');
header("Content-Transfer-Encoding:binary");
$write->save('php://output');
7打开页面,刷新的时候会d出对话框,让你选择文件保存路径和文件名称,我直接放在了桌面上,如图所示;
8打开表格后,数据和格式跟代码中的一致,说明PHP导出的Excel是正确的。如果出现错误,检查一下你的表格数组和数据数组吧。
这属于php的技术;
php可以用PHPExcel直接导出成excel文件;
代码如下:
require_once("/lib/excelcreatorclassphp");
$myxls = new ExcelCreator ("中文Excel");
$aTableHead = '
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="String">Name3</Data></Cell> <Cell><Data ss:Type="String">Surname3</Data></Cell> </Row>';
$aTableBody = '
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="String">Schwarz3</Data></Cell> <Cell><Data ss:Type="String">Oliver3</Data></Cell> </Row>';
$aTableBottom = '
<Row ss:AutoFitHeight="0">
<Cell><Data ss:Type="String">123</Data></Cell> <Cell><Data ss:Type="String">Peter3</Data></Cell> </Row>';
$workSheet = $myxls->createWorkSheet ( "中文sheet1", $aTableHead, $aTableBody, $aTableBottom );
echo $myxls->createExcel ( $workSheet );
以上就是关于php 数据库 导出excel 的时候 导出成功 但是却是乱码 请问怎么解决全部的内容,包括:php 数据库 导出excel 的时候 导出成功 但是却是乱码 请问怎么解决、php用PHPExcel导出数据到excel表,提示错误: Cannot modify header information - headers already sent、php怎么导出大量数据的Excel等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)