加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2016-11-27 10:50:12 所属栏目:大数据 来源:站长网
导读:解决方法如下所示: 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文件出现乱码的问题全部内容了,希望大家多多支持脚本之家~

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读