English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Perfectly Solve the Problem of Garbled Characters When Exporting to xls File Using PHPExcel

The solution is as follows:

<?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'];
//Create an Excel object
$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);
//set row height 
$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);
//set horizontal alignment 
$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', 'Requirement delivery date')
    ->setCellValue('H2', 'Confirmed BOM material number')
    ->setCellValue('I2', 'PMC confirmed delivery date')
    ->setCellValue('J2', 'PMC delivery memo');
// 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('Order Summary Sheet');
// 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();//Clear the buffer to avoid garbled characters</span>
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Order Summary Sheet(' . date('Ymd-His
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5);
$objWriter->save('php://output');
?>

Add the ob_end_clean() function before header(), clear the buffer, so there will be no garbled characters!

This is the complete content brought to you by the editor to solve the problem of garbled characters when exporting phpexcel to xls file. Hope everyone will support and cheer for the tutorial!

You May Also Like