PHP-php 在导出excel时使用iconv出现乱码 不使用编码转换时不能出现制表符

发布于 2017-03-29 02:55:32 字数 1843 浏览 1186 评论 1

问题主要的就是把数据导成excel的xls格式,之前做第一版的时候,没什么问题,现在第二版直接把之前的版本拿过来用谁想居然导出来乱码。
使用iconv函数转码的情况

$this->filename= date("Y-m-d").'.xls';
header('Content-type:text/html;charser=utf-8');
header("Content-type:application/vnd.ms-excel");
header("Content-Disposition:filename=".$this->filename);
echo iconv('utf-8','gb2312','操作员:'.session('username'))."tn";
echo iconv('utf-8','gb2312','查询测点:'.session('point_id')."测量类型:".session('type_id')."tn";
echo iconv('utf-8','gb2312','所属单位')."t";
echo iconv('utf-8','gb2312','测点')."t";
echo iconv('utf-8','gb2312','测点描述')."t";
echo iconv('utf-8','gb2312','测点位置')."t";
echo iconv('utf-8','gb2312','水文环境')."t";
echo iconv('utf-8','gb2312','监测量')."t";
echo iconv('utf-8','gb2312','数据')."t";
echo iconv('utf-8','gb2312','分析')."t";
echo iconv('utf-8','gb2312','采集时间')."tn";
//将$data数组导出为excel文件
foreach($this->data as $k=>$v)
{
echo iconv('utf-8','gb2312',$v['name'])."t";
echo iconv('utf-8','gb2312',$v['point_name'])."t";
echo iconv('utf-8','gb2312',$v['description'])."t";
echo iconv('utf-8','gb2312',$v['location'])."t";
echo iconv('utf-8','gb2312',$v['hydro_name'])."t";
echo iconv('utf-8','gb2312',$v['monitor_type_name'])."t";
echo iconv('utf-8','gb2312',$v['data'].$v['unit'])."t";
if($v['status'] == 0) echo iconv('utf-8','gb2312','正常')."t";
if($v['status'] == 1) echo iconv('utf-8','gb2312','预警')."t";
echo iconv('utf-8','gb2312',$v['collected_time'])."tn";
}
exit;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜无邪 2017-04-14 03:44:05

1). "之前做第一版的时候,没什么问题,现在第二版直接把之前的版本拿过来用谁想居然导出来乱码。"
-- 你们做第一版的时候, php文件是用utf8格式保存的. 第二版存成了gbk. 这个找个编辑器看一下, 比如notepad++

2). "不使用编码转换时不能出现制表符 "
-- 应该是有的. 你的图片里更像是excel设置的问题. 把列宽调大一点? 用编辑器把下载下来的excel文件打开, 看看有没有制表符

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文