您好,欢迎访问一九零五行业门户网

怎么解决php导出excel文件乱码问题

php导出excel文件乱码的解决办法:首先处理完相关脚本数据;然后在输出excel文件之前添加“ob_end_clean()”函数即可,该函数用于清空缓冲区并关闭输出缓冲。
php导出excel文件乱码问题
使用php导出excel文档,有时候莫名其妙就会出现导出的数据乱码,现在推荐一个万能修补大法
话不多说,直接上代码
核心就是在处理完数据之后,输出excel文件之前 添加 ob_end_clean()函数;具体见示例代码,此处只罗列部分代码
foreach ($licenselist as $key => $item) { $objphpexcel->setactivesheetindex(0) ->setcellvalue('a' . ($key + 2), $item["company_name"]) ->setcellvalue('b' . ($key + 2), $item["user_name"]) ->setcellvalue('c' . ($key + 2), $item["order_number"]) ->setcellvalue('d' . ($key + 2), $item['apply_type']==2 ? 'official':'trial') ->setcellvalue('e' . ($key + 2), $item["license_key"]) ->setcellvalue('f' . ($key + 2), $statusarr[$item['license_status']])->setcellvalue('g' . ($key + 2), $item["user_email"]) ->setcellvalue('h' . ($key + 2), date('y/m/d h:i:s', strtotime($item['insert_time']))); } $objphpexcel->getactivesheet()->settitle('simple'); $objphpexcel->setactivesheetindex(0); ob_end_clean();//解决乱码核心 就在此处添加此函数 header('content-type: application/vnd.ms-excel'); header('content-disposition: attachment;filename="test_list.xls"'); header('cache-control: max-age=0'); header('cache-control: max-age=1'); header('expires: mon, 26 jul 1997 05:00:00 gmt'); header('last-modified: ' . gmdate('d, d m y h:i:s') . ' gmt'); header('cache-control: cache, must-revalidate'); header('pragma: public'); $objwriter = phpexcel_iofactory::createwriter($objphpexcel, 'excel5'); $objwriter->save('php://output'); exit;
如上红色标记代码所示,如果此方法还是不行,请尝试使用iconv()函数,具体使用此处不做详解,请自行百度
推荐:《php教程》
相关介绍:
ob_end_clean — 清空(擦除)缓冲区并关闭输出缓冲
说明
ob_end_clean ( void ) : bool
此函数丢弃最顶层输出缓冲区的内容并关闭这个缓冲区。如果想要进一步处理缓冲区的内容,必须在ob_end_clean()之前调用ob_get_contents(),因为当调用ob_end_clean()时缓冲区内容将被丢弃。
返回值
成功时返回 true, 或者在失败时返回 false。 错误的原因首先是,在调用时没有一个起作用的缓冲区,或者是因为某些原因缓冲区不能被删除(可能对特殊缓冲区而言)。
错误/异常
如果函数失败了,将引发一个e_notice异常。
以上就是怎么解决php导出excel文件乱码问题的详细内容。
其它类似信息

推荐信息