列数据在PHPExcel中重复

时间:2014-01-19 10:55:39

标签: php phpexcel

PHPExcel我有一个奇怪的错误。

我上传的文件包含一个自定义格式为000-0000000的列,该列生成的数字为XXX-XXXXXXX(X为数字),但是当我读取文件时,我将列值设为{ {1}} XXXXXXXXX-XXXXXXXXX之间的数字相同,表示列值正在重复。

这是我正在阅读文件的方式:

-

整个文件都会发生这种情况,有人碰巧知道原因吗?

我已经验证了文件中的数据实际上与我期望的一样,将其保存为 $objReader = PHPExcel_IOFactory::createReaderForFile($file); $objPHPExcel = $objReader->load($file); $objReader->setReadDataOnly(true); $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true); $result = array(); $errors = array(); $i = 1; foreach($sheetData as $row){ if($has_header == "1" && $i == 1){ $i++; continue; } die(print_r($row)); } 文件与使用记事本查看。实际文件为csv格式

1 个答案:

答案 0 :(得分:1)

虽然PHPExcel格式处理程序尽一切努力处理大多数常规Excel格式掩码,但它在小数,千位分隔符,百分比,日期,会计,科学,分数等基础知识之外并不完美。您的自定义掩码{ {1}}不属于这些基本格式,虽然PHPExcel格式处理程序应该能够处理这样的事情,但你完全有可能在代码中发现了一个错误。

应处理此格式掩码的代码位于000-0000000类的_complexNumberFormatMask()方法中,只要将数字格式化为复杂格式(例如您的格式),就应调用该方法。

但是,这个用于处理复杂数字格式的代码是在PHPExcel 1.7.9版本中添加的:以前的版本会返回一个字符串,其中“ - 之间的数字是相同的”,所以请检查您是否使用较早的版本PHPExcel的版本,因为我几分钟前刚刚运行的测试表明这对1.7.9版本的掩码工作正常。