PHP-php 在导出excel时使用iconv出现乱码 不使用编码转换时不能出现制表符
问题主要的就是把数据导成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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
1). "之前做第一版的时候,没什么问题,现在第二版直接把之前的版本拿过来用谁想居然导出来乱码。"
-- 你们做第一版的时候, php文件是用utf8格式保存的. 第二版存成了gbk. 这个找个编辑器看一下, 比如notepad++
2). "不使用编码转换时不能出现制表符 "
-- 应该是有的. 你的图片里更像是excel设置的问题. 把列宽调大一点? 用编辑器把下载下来的excel文件打开, 看看有没有制表符