完美解决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编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |