PHP_XLSXWriter office部分单元格空白 wps可以完整显示

1 篇文章 0 订阅
1 篇文章 0 订阅

事情的起因是,我生成的一个文档,在wps下没有任何问题,但是在office 2013下,总计列是空白的。

一通操作,还查了github上的issue也没有解决,最后扒word文档的xml的源码发现了问题。

xml的源码显示,第一个红框中是<v>测试</v> 这个在office中是没办法正常显示的

而第二个<is><t>测试320.00</t></is> 是正常的

扒源码,发现第一个<v>表示 数字格式,第二个<is> 标签表示字符串格式。

那么答案就呼之欲出了,office 无法识别 <v> 标签内的字符串,而wps却能识别并且自动纠错(重新保存以后还会自动转成字符串格式,让office也能识别)这就是为什么office会显示为空白,而wps能正确显示的原因。wps牛逼(要是没广告就更好了)

那么,为什么明明是字符串的单元格,却被设置成了数字格式呢?何况我根本没有设置格式呀?

再扒源码,发现PHP_XLSXWriter的逻辑是这样的:

表头单独判断格式,其他根据配置来判断格式,没有格式的话就自动根据内容来匹配格式。并且每列共用格式。

举个例子,某表格除标题以外,第一格内容为数字 1.0 ,那么它就会自动判定该列格式都为数字格式,然后你在第二格放一个字符串,它也会给你设定为数字格式,由此触发bug。

解决方式:在对应的style配置中强制设定为文本类型  'style'=>['format'=>'@']

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值