完美解决phpexcel导出到xls文件出现乱码的问题
程序员文章站
2024-04-02 11:01:46
解决方法如下所示:
解决方法如下所示:
<?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) <span style="color:#ff0000;">ob_end_clean();//清除缓冲区,避免乱码</span> 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'); ?>
在header() 前面加上ob_end_clean() 函数,清除缓冲区, 这样就不会乱码了!
以上就是小编为大家带来的完美解决phpexcel导出到xls文件出现乱码的问题全部内容了,希望大家多多支持~