美文网首页
excel 导出emoji展示数据不完整问题

excel 导出emoji展示数据不完整问题

作者: 何佳阳 | 来源:发表于2019-11-29 16:44 被阅读0次

今天在导出excel的时候,发现在windows系统上面excel数据展示不全,在mac上面导出的excel打不开。

经过排查,发现是导出的excel内有emoji表情导致的,想正确展示带emoji的数据有3种办法。

1:把emoji符号过滤

function filterEmoji($str)

{

    $str = preg_replace_callback( '/./u',

        function (array $match) {

            return strlen($match[0]) >= 4 ? '' : $match[0];

        },$str);

    return $str;

}

2:把emoji符号替换成可以展示的符号,代替emoji,这里替换成了*

$text = json_encode($value);

$excelValue = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/","*", $text);

$excelValue = json_decode($excelValue);

3:不用phpExcel类,用html直接输出excel文件

1.将请求的mimeType设置为excel   'mimeType'=>'application/vnd.ms-excel

2.将数据写进html的table里面

$th_list = ['','','','','','','','',''];

        $table = '<table border="1"><thead><tr align="center" bgcolor="#0099CC">';

        foreach($th_list as $k => $v){

            $table .= "<th>{$v}</th>";

        }

        $table .= '</tr></thead><tbody>';

        if($data){

            foreach ($data as $k =>$v) {

                $table .= "<tr align='center'>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= "<td></td>";

                $table .= '</tr>';

            }

        }

        $table .= '</tbody></table>';

3:返回数据

经过这三步后,就可以正常显示带有emoji的excel了。

相关文章

网友评论

      本文标题:excel 导出emoji展示数据不完整问题

      本文链接:https://www.haomeiwen.com/subject/vlygwctx.html