首页 / PHP / 使用phpexcel导出excel乱码
使用phpexcel导出excel乱码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用phpexcel导出excel乱码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5516字,纯文字阅读大概需要8分钟。
内容图文
数据库和页面都是utf8。header('Content-Type: application/vnd.ms-excel;');
header('Content-Disposition: attachment;filename='.$filename.'.xls');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); //
导出后,打开execel是乱码的。
本地window下导出的话没问题,上传到服务器上导出,就是乱码。
直接var_dump($objWreter)到页面,发现不会乱码。
header('Content-Type: application/vnd.ms-excel;charset=gb2312')也还是乱码;
这个乱码是什么问题
回复讨论(解决方案)
在header() 前面加上ob_end_clean() 函数, 清除缓冲区, 这样就不会乱码了!
ob_end_clean();//清除缓冲区,避免乱码
header('Content-Type: application/vnd.ms-excel');
.....
.....
$objWriter->save('php://output'); 输出的是二进制文档流,就和图片一样不存在字符集的问题
用 excel 打开是出现乱码,是因为文件中含有不能被他识别的内容
这多半是包含了 php 的错误信息
你可以截个图贴上来看看,也可以以把 xls 文件放到网盘上
在header() 前面加上ob_end_clean() 函数, 清除缓冲区, 这样就不会乱码了!
ob_end_clean();//清除缓冲区,避免乱码
header('Content-Type: application/vnd.ms-excel');
.....
.....
的确是这问题,伤不起的缓冲区
$objWriter->save('php://output'); 输出的是二进制文档流,就和图片一样不存在字符集的问题
用 excel 打开是出现乱码,是因为文件中含有不能被他识别的内容
这多半是包含了 php 的错误信息
你可以截个图贴上来看看,也可以以把 xls 文件放到网盘上
在header() 前面加上ob_end_clean() 函数, 清除缓冲区, 这样就不会乱码了!
ob_end_clean();//清除缓冲区,避免乱码
header('Content-Type: application/vnd.ms-excel');
.....
.....
的确是这问题,伤不起的缓冲区
没用,我用的是本地测试的,唉!本地本来就可以的,大意了
你的 A1 单元格处的内容就不对
请检查是否有多余的输出
上下代码
/*--------------设置表头信息------------------*/
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'a')
->setCellValue('B1', 'b')
->setCellValue('C1', 'c')
->setCellValue('D1', 'd')
->setCellValue('E1', 'e')
->setCellValue('F1','f')
->setCellValue('G1','g')
->setCellValue('H1','h')
->setCellValue('I1',i')
->setCellValue('J1','f');
/*--------------开始从数据库提取信息插入Excel表中------------------*/
$i=2; //定义一个i变量,目的是在循环输出数据是控制行数
for($j=0;$j<count($result);$j++){
// $rm = iconv("GB2312","UTF-8",$rs[1]); //对字符进行编码将数据库里GB2312的中文字符转换成UTF-8格式
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue("A".$i, $result[$j]['ori_stu_name'])
->setCellValue("B".$i, $result[$j]['ori_stu_candidateNum'])
->setCellValue("C".$i, $result[$j]['ori_stu_sex'])
->setCellValue("D".$i, $result[$j]['ori_stu_id_card'])
->setCellValue("E".$i, $result[$j]['ori_stu_institution'])
->setCellValue('F'.$i, $result[$j]['ori_stu_specialty'])
->setCellValue('G'.$i, $result[$j]['ori_stu_phone'])
->setCellValue('H'.$i, $result[$j]['ori_stu_isMember'])
->setCellValue('I'.$i, $result[$j]['ori_stu_domicile'])
->setCellValue('J'.$i, $result[$j]['ori_stu_isReport']);
$i++;
}
/*--------------下面是设置其他信息------------------*/
$objPHPExcel->getActiveSheet()->setTitle('学生表'); //设置sheet的名称
$objPHPExcel->setActiveSheetIndex(0); //设置sheet的起始位置
$filename = date('Y-m',time())."信息表";
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename='.$filename.'.xls');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output'); //这里生成excel后会弹出下载
你的 A1 单元格处的内容就不对
请检查是否有多余的输出
我上代码吧
Vendor("Excel.PHPExcel"); Vendor("Excel.PHPExcel.IOFactory"); $objPHPExcel = new PHPExcel(); $db=M("student_info"); $where="where fsi_logistics.ori_log_stuCandidateNum = fsi_student_info.ori_stu_candidateNum"; $sql="select logistics.*,student_info.ori_stu_name from student_info,logistics ".$where; $result= $db->query($sql); $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '姓名') ->setCellValue('B1', '考生号') ->setCellValue('C1', '商品') ->setCellValue('D1', '价格'); $i=2; for($j=0;$j<count($result);$j++){ $objPHPExcel->setActiveSheetIndex(0) ->setCellValue("A".$i, $result[$j]['ori_stu_name']) ->setCellValue("B".$i, $result[$j]['ori_log_stuCandidateNum']) ->setCellValue("C".$i, $result[$j]['product']) ->setCellValue("D".$i, $result[$j]['price']); $i++; } $objPHPExcel->getActiveSheet()->setTitle('学生表'); $objPHPExcel->setActiveSheetIndex(0); $filename = date('Y-m',time())."生活用品表"; ob_end_clean() ; header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename='.$filename.'.xls'); header('Cache-Control: max-age=0'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('php://output'); exit;
没有其它输出了呀,在winddow下导出是正常的
我已经解决了,bom头的问题,谢谢你们了
内容总结
以上是互联网集市为您收集整理的使用phpexcel导出excel乱码全部内容,希望文章能够帮你解决使用phpexcel导出excel乱码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。