1. 程式人生 > >phpexcel 導出到xls文件的時候出現亂碼解決

phpexcel 導出到xls文件的時候出現亂碼解決

sin width max-age ech b- sub 數量 lean align

在header() 前面加上ob_end_clean() 函數, 清除緩沖區, 這樣就不會亂碼了!

<?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) ob_end_clean();//清除緩沖區,避免亂碼 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); ?>

.

phpexcel 導出到xls文件的時候出現亂碼解決