突然接触PHP导出带身份证表格的项目,使用PhpSpreadsheet导出身份证时会自动变成科学表达式,失去精度,如下图
身份证变成丢失后两位精度
百度各种找解决办法,有说加单引号、有的说加制表符\t的,都是一些非数字的字符串来防止转成科学计数法如下
个人不信邪,感觉现在PHP生态那么成熟,PhpSpreadsheet肯定有写入数据规定数据类型的办法,最后在github找到
即使用
setCellValueExplicit方法写入,最后一个参数是规定数据类型的
数据类型规定在
PhpOffice\PhpSpreadsheet\Cell
最终正规身份证写入方法
$worksheet->setCellValueExplicit("A1",522631200212445121, DataType::TYPE_STRING);
得到
完美解决