完美解决phpexcel导出到xls文件出现乱码的问题


Posted in PHP onOctober 29, 2016

解决方法如下所示:

<?php
include 'global.php';
$ids = $_GET['ids'];

$sql = "select * from crm_cost_end where id in ( {$ids} )";
$result = $db->findAll($sql);
//echo $result[1]['sn'];

//创建一个excel对象
$objPHPExcel = new PHPExcel();
// Set properties 

$objPHPExcel->getProperties()->setCreator("ctos")
    ->setLastModifiedBy("ctos")
    ->setTitle("Office 2007 XLSX Test Document")
    ->setSubject("Office 2007 XLSX Test Document")
    ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
    ->setKeywords("office 2007 openxml php")
    ->setCategory("Test result file");

//set width 
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(25);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(50);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(10);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(30);

//设置行高度 
$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(22);

$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(20);

//set font size bold 
$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getFont()->setBold(true);

$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('A2:J2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//设置水平居中 
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$objPHPExcel->getActiveSheet()->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('B')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('D')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('F')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('G')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('H')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel->getActiveSheet()->getStyle('I')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

// 
$objPHPExcel->getActiveSheet()->mergeCells('A1:J1');

// set table header content 
$objPHPExcel->setActiveSheetIndex(0)
    ->setCellValue('A1', '订单数据汇总 时间:' . date('Y-m-d H:i:s'))
    ->setCellValue('A2', '订单ID')
    ->setCellValue('B2', '下单人')
    ->setCellValue('C2', '客户名称')
    ->setCellValue('D2', '下单时间')
    ->setCellValue('E2', '需求机型')
    ->setCellValue('F2', '需求数量')
    ->setCellValue('G2', '需求交期')
    ->setCellValue('H2', '确认BOM料号')
    ->setCellValue('I2', 'PMC确认交期')
    ->setCellValue('J2', 'PMC交货备注');

// Miscellaneous glyphs, UTF-8 

for ($i = 0; $i < count($result) - 1; $i++) {
  $objPHPExcel->getActiveSheet(0)->setCellValue('A' . ($i + 3), $result[$i]['id']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('B' . ($i + 3), $result[$i]['realname']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('C' . ($i + 3), $result[$i]['customer_name']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('D' . ($i + 3), $OrdersData[$i]['create_time']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('E' . ($i + 3), $result[$i]['require_product']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('F' . ($i + 3), $result[$i]['require_count']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('G' . ($i + 3), $result[$i]['require_time']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('H' . ($i + 3), $result[$i]['product_bom_encoding']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('I' . ($i + 3), $result[$i]['delivery_time']);
  $objPHPExcel->getActiveSheet(0)->setCellValue('J' . ($i + 3), $result[$i]['delivery_memo']);
  $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':J' . ($i + 3))->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
  $objPHPExcel->getActiveSheet()->getStyle('A' . ($i + 3) . ':J' . ($i + 3))->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
  $objPHPExcel->getActiveSheet()->getRowDimension($i + 3)->setRowHeight(16);
}


// Rename sheet 
$objPHPExcel->getActiveSheet()->setTitle('订单汇总表');


// Set active sheet index to the first sheet, so Excel opens this as the first sheet 
$objPHPExcel->setActiveSheetIndex(0);


// Redirect output to a client's web browser (Excel5) 
<span style="color:#ff0000;">ob_end_clean();//清除缓冲区,避免乱码</span>
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="订单汇总表(' . date('Ymd-His') . ').xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
?>

在header() 前面加上ob_end_clean() 函数,清除缓冲区, 这样就不会乱码了!

以上就是小编为大家带来的完美解决phpexcel导出到xls文件出现乱码的问题全部内容了,希望大家多多支持三水点靠木~

PHP 相关文章推荐
IIS环境下快速安装、配置和调试PHP5.2.0
Dec 17 PHP
Phpbean路由转发的php代码
Jan 10 PHP
php flush类输出缓冲剖析
Oct 19 PHP
解析php如何将日志写进syslog
Jun 28 PHP
ThinkPHP之M方法实例详解
Jun 20 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
Nov 05 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
PHP实现的迪科斯彻(Dijkstra)最短路径算法实例
Sep 16 PHP
PHP延迟静态绑定的深入讲解
Apr 02 PHP
php二维数组按某个键值排序的实例讲解
Feb 15 PHP
PHP实现发送微博消息功能完整示例
Dec 04 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
Feb 16 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 #PHP
浅谈PHP定义命令空间的几个注意点(推荐)
Oct 29 #PHP
php+mongodb判断坐标是否在指定多边形区域内的实例
Oct 28 #PHP
PHP创建多级目录的两种方法
Oct 28 #PHP
PHP查询大量数据内存耗尽问题的解决方法
Oct 28 #PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
Oct 28 #PHP
php  PATH_SEPARATOR判断当前服务器系统类型实例
Oct 28 #PHP
You might like
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
Jquery Ajax解析XML数据(同步及异步调用)简单实例
2014/02/12 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
详解Node中导入模块require和import的区别
2017/08/11 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
详解Web使用webpack构建前端项目
2017/09/23 Javascript
Vuex实现计数器以及列表展示效果
2018/03/10 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
layui表格数据重载
2019/07/27 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
Python字符串切片操作知识详解
2016/03/28 Python
python使用thrift教程的方法示例
2019/03/21 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Python实现把类当做字典来访问
2019/12/16 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
使用css3匹配手机屏幕横竖状态
2014/01/27 HTML / CSS
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers
Android超详细讲解组件ScrollView的使用
2022/03/31 Java/Android
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js
Java界面编程实现界面跳转
2022/06/16 Java/Android