PHPExcel写入单元格的数据为空,但是数据源有值【php】

一,前言

1,核心代码

PHPExcel,php处理excel插件

$objPHPExcel = new \PHPExcel();

$objPHPExcel->setActiveSheetIndex(0);

$objActive = $objPHPExcel->getActiveSheet()

2,两种写入方式

$objActive->setCellValue("A1", "content")  根据传入内容自动判断单元格内容类型

比如content = 'a' 字符串;content = 123  数值 ; content =true  布尔类型

$objActive->setCellValueExplicit("A1", "数据",$type) 显式指定内容类型

支持的类型有:TYPE_STRING TYPE_STRING2 TYPE_NULL TYPE_NUMERIC TYPE_FORMULA TYPE_BOOL TYPE_ERROR

二,问题出现

1,问题描述

从数据库获取数据,然后循环遍历写入excel的时候

有的单元格可以写入数据,有的单元格数据为空,查询数据源,发现并没有丢失的数据。

2,排查

对比了可以写入的数据和不能写入的数据

发现只有emoji表情方面的区别,原来PHPExcel不支持这种编码的

当然有解决的办法,请参考:https://github.com/iamcal/php-emoji

我选择了对表情进行过滤。

3,过滤,PHP语言

preg_replace_callback($a, function(), $c)  执行正则表达式搜索并使用回调替换

$a : 要搜索的字符串

function : 回调函数

$c : 源输入

实例:返回过滤后的数据,数组对应数组,字符对应字符

function filterEmoji($str)
{
    $str = preg_replace_callback(
            '/./u',
            function (array $match) {
                return strlen($match[0]) >= 4 ? '' : $match[0];
            },
            $str);

     return $str;
 }
 

实例2:匹配emoji表情

function emoji_match($text)

{

    $emoji = "/[\u010000-\u10FFFF]/g"; // 4字节utf-16 = emoji

    return preg_match($emoji, $text);

}

转载于:https://my.oschina.net/songms/blog/3064688

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值