完美解决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 相关文章推荐
PHP 中执行系统外部命令
Oct 09 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
php 静态变量的初始化
Nov 15 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
Apr 23 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
PHP中ini_set与ini_get用法实例
Nov 04 PHP
织梦sitemap地图实时推送给百度的教程
Aug 03 PHP
PHP的APC模块实现上传进度条
Oct 27 PHP
Laravel框架查询构造器简单示例
May 08 PHP
Laravel框架实现文件上传的方法分析
Sep 29 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
Apr 07 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 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
再说下636单管机
2021/03/02 无线电
php对gzip文件或者字符串解压实例参考
2008/07/25 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
thinkPHP框架实现的无限回复评论功能示例
2018/06/09 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
详解用node搭建简单的静态资源管理器
2017/08/09 Javascript
基于Require.js使用方法(总结)
2017/10/26 Javascript
layui 表格的属性的显示转换方法
2018/08/14 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
Python程序中的观察者模式结构编写示例
2016/05/27 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
python3.7 sys模块的具体使用
2019/07/22 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
Python日志syslog使用原理详解
2020/02/18 Python
无需压缩软件,用python帮你操作压缩包
2020/08/17 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
python中re模块知识点总结
2021/01/17 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
Argos官网:英国家喻户晓的百货零售连锁商
2017/04/03 全球购物
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
培训专员岗位职责
2014/02/26 职场文书
经典英文广告词
2014/03/18 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
2014年终工作总结范本
2014/12/15 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
Oracle 区块链表创建过程详解
2021/05/15 Oracle
python程序的组织结构详解
2021/12/06 Python