1、导出excel,将数字列用excel转成对应类型
2、使用excel将excel转成csv,将数字列用excel转成对应额理性
3、即便前面三次都处理了,还是要注意,是否数字列仍然隐含格式字符,可以用两种方法发现
- 转换成对应类型结果为0(字符串转整型时,如果第一位不是数字字符串,则直接转成0)
- 因为csv中的数据都是string类型,所以使用strlen计算,发现比实际看到的长
4、根据实际情况,处理数字字段,下面代码可以让你看到字符串的乱码在哪,一般都是在开头。
for($i = 0; $i <= count($data[0]); $i++){
echo $data[0][$i] . '|';
}
我在处理的时候,发现我的id开头有的是三个乱码字符,而有的没有,所以需要区别处理
5、最终代码
$handle = fopen('./why.csv', 'r');
if (!$handle) {
exit('读取文件失败');
}
while (($data = fgetcsv($handle)) !== false) {
if(empty($data[1])){
continue;
}
if (empty((int)$data[0])){
$id = (int)substr($data[0], 3);
}else{
$id = (int)$data[0];
}
}
fclose($handle);