PHP导出EXCEL乱码

/**
* 生成excel表格
* @param array $data 需要导出的数据
* @param array t i t l e 带 出 数 据 的 标 题 ∗ @ p a r a m s t r f i l e n a m e 导 出 e x c e l 文 件 名 称 ∗ / f u n c t i o n e x p o r t E x c e l ( title 带出数据的标题 * @param str filename 导出excel文件名称 */ function exportExcel( title@paramstrfilenameexcel/functionexportExcel(data=array(), t i t l e = a r r a y ( ) , title=array(), title=array(),filename=‘report’){
ob_end_clean();
header(“Content-type:application/octet-stream”);
header(“Accept-Ranges:bytes”);
header(‘Content-Encoding: UTF-8’);
header(“Content-Type: text/csv; charset=UTF-8”);
header(“Content-type:application/vnd.ms-excel”);
header(“Content-Disposition:attachment;filename=”. f i l e n a m e . " . x l s " ) ; h e a d e r ( " P r a g m a : n o − c a c h e " ) ; h e a d e r ( " E x p i r e s : 0 " ) ; / / 导 出 x l s 开 始 i f ( ! e m p t y ( filename.".xls"); header("Pragma: no-cache"); header("Expires: 0"); //导出xls 开始 if (!empty( filename.".xls");header("Pragma:nocache");header("Expires:0");//xlsif(!empty(title)){
foreach ($title as $k => $v) {
t i t l e [ title[ title[k]=iconv(“UTF-8”, “GB2312//IGNORE”,$v);

        }
        $title= implode("\t", $title);
        echo "$title\n";
    }
    if (!empty($data)){
        foreach($data as $key=>$val){
            foreach ($val as $ck => $cv) {
                $data[$key][$ck]=iconv("UTF-8", "GB2312//IGNORE", $cv);

                //$data[$key][$ck] = mb_convert_encoding($cv, 'GB2312', 'UTF-8');
            }
            $data[$key]=implode("\t", $data[$key]);
            
        }
        echo implode("\n",$data);
    }
}

在使用上述方法导出EXCEL的时候,有时候发现出现乱码(几率很小),对编码和特殊字符已处理 还是出现乱码,后换成导出表格的样式解决了乱码问题

 /**
*  生成excel表格
*  @param array $data 需要导出的数据 
*  @param array $title 带出数据的标题
*  @param str filename 导出excel文件名称
*/
function exportTableExcel($data=array(),$title=array(),$filename='report'){

    $strTable ='<table width="500" border="1">';
    $strTable .= '<tr>';
    //第一行的标题
    foreach ($title as $key => $value){
        $strTable .= '<td style="text-align:left;font-size:16px;" width="*">'.$value.'</td>'."\r\n";
    }
    $strTable .= '</tr>';
    //导入数据
    $strTable .= '<tr>';
    foreach ($data as $key => $val) {
        foreach ($val as $ck => $cv) {
            $strTable .= '<td style="text-align:left;font-size:14px;" rowspan="*">'.$cv.'</td>'."\r\n";
        }
        $strTable .= '</tr>';
    }
    $strTable .='</table>';
    
    header("Content-type: application/vnd.ms-excel");//将查询结果导出到Excel
    header("Content-Type: application/force-download");//告诉浏览器强制下载
    header("Content-Disposition: attachment; filename=".$filename.".xls");//attachment作为附件下载,inline在线下载,filename设置文件名
    header('Expires:0');//浏览器不会响应缓存
    header('Pragma:public');//Public指示响应可被任何缓存区缓存。
    echo '<html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'.$strTable.'</html>';
    exit();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值