完美解决phpexcel导出到xls文件出现乱码的问题
发布时间:2016-11-27 12:23:00 所属栏目:大数据 来源:站长网
导读:解决方法如下所示: lt;#63;phpinclude 'global.php';$ids = $_GET['ids'];$sql = "select * from crm_cost_end where id in ( {$ids} )";$result = $db-gt;findAll($sql);//echo $result[1]['sn'];//创建一个excel对象$objPHPExcel = new PHPExcel();// S
|
解决方法如下所示:
lt;#63;php
include 'global.php';
$ids = $_GET['ids'];
$sql = "select * from crm_cost_end where id in ( {$ids} )";
$result = $db-gt;findAll($sql);
//echo $result[1]['sn'];
//创建一个excel对象
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel-gt;getProperties()-gt;setCreator("ctos")
-gt;setLastModifiedBy("ctos")
-gt;setTitle("Office 2007 XLSX Test Document")
-gt;setSubject("Office 2007 XLSX Test Document")
-gt;setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
-gt;setKeywords("office 2007 openxml php")
-gt;setCategory("Test result file");
//set width
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('A')-gt;setWidth(8);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('B')-gt;setWidth(10);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('C')-gt;setWidth(25);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('D')-gt;setWidth(12);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('E')-gt;setWidth(50);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('F')-gt;setWidth(10);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('G')-gt;setWidth(12);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('H')-gt;setWidth(12);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('I')-gt;setWidth(12);
$objPHPExcel-gt;getActiveSheet()-gt;getColumnDimension('J')-gt;setWidth(30);
//设置行高度
$objPHPExcel-gt;getActiveSheet()-gt;getRowDimension('1')-gt;setRowHeight(22);
$objPHPExcel-gt;getActiveSheet()-gt;getRowDimension('2')-gt;setRowHeight(20);
//set font size bold
$objPHPExcel-gt;getActiveSheet()-gt;getDefaultStyle()-gt;getFont()-gt;setSize(10);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A2:J2')-gt;getFont()-gt;setBold(true);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A2:J2')-gt;getAlignment()-gt;setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A2:J2')-gt;getBorders()-gt;getAllBorders()-gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//设置水平居中
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A1')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('B')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('D')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('F')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('G')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('H')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('I')-gt;getAlignment()-gt;setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//
$objPHPExcel-gt;getActiveSheet()-gt;mergeCells('A1:J1');
// set table header content
$objPHPExcel-gt;setActiveSheetIndex(0)
-gt;setCellValue('A1', '订单数据汇总 时间:' . date('Y-m-d H:i:s'))
-gt;setCellValue('A2', '订单ID')
-gt;setCellValue('B2', '下单人')
-gt;setCellValue('C2', '客户名称')
-gt;setCellValue('D2', '下单时间')
-gt;setCellValue('E2', '需求机型')
-gt;setCellValue('F2', '需求数量')
-gt;setCellValue('G2', '需求交期')
-gt;setCellValue('H2', '确认BOM料号')
-gt;setCellValue('I2', 'PMC确认交期')
-gt;setCellValue('J2', 'PMC交货备注');
// Miscellaneous glyphs, UTF-8
for ($i = 0; $i lt; count($result) - 1; $i++) {
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('A' . ($i + 3), $result[$i]['id']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('B' . ($i + 3), $result[$i]['realname']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('C' . ($i + 3), $result[$i]['customer_name']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('D' . ($i + 3), $OrdersData[$i]['create_time']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('E' . ($i + 3), $result[$i]['require_product']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('F' . ($i + 3), $result[$i]['require_count']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('G' . ($i + 3), $result[$i]['require_time']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('H' . ($i + 3), $result[$i]['product_bom_encoding']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('I' . ($i + 3), $result[$i]['delivery_time']);
$objPHPExcel-gt;getActiveSheet(0)-gt;setCellValue('J' . ($i + 3), $result[$i]['delivery_memo']);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A' . ($i + 3) . ':J' . ($i + 3))-gt;getAlignment()-gt;setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
$objPHPExcel-gt;getActiveSheet()-gt;getStyle('A' . ($i + 3) . ':J' . ($i + 3))-gt;getBorders()-gt;getAllBorders()-gt;setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel-gt;getActiveSheet()-gt;getRowDimension($i + 3)-gt;setRowHeight(16);
}
// Rename sheet
$objPHPExcel-gt;getActiveSheet()-gt;setTitle('订单汇总表');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel-gt;setActiveSheetIndex(0);
// Redirect output to a client's web browser (Excel5)
lt;span style="color:#ff0000;"gt;ob_end_clean();//清除缓冲区,避免乱码lt;/spangt;
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-gt;save('php://output');
#63;gt;
在header() 前面加上ob_end_clean() 函数,清除缓冲区, 这样就不会乱码了! 以上就是小编为大家带来的完美解决phpexcel导出到xls文件出现乱码的问题全部内容了,希望大家多多支持脚本之家~ (编辑:温州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

