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
格式
答案 0 :(得分:1)
虽然PHPExcel格式处理程序尽一切努力处理大多数常规Excel格式掩码,但它在小数,千位分隔符,百分比,日期,会计,科学,分数等基础知识之外并不完美。您的自定义掩码{ {1}}不属于这些基本格式,虽然PHPExcel格式处理程序应该能够处理这样的事情,但你完全有可能在代码中发现了一个错误。
应处理此格式掩码的代码位于000-0000000
类的_complexNumberFormatMask()
方法中,只要将数字格式化为复杂格式(例如您的格式),就应调用该方法。
但是,这个用于处理复杂数字格式的代码是在PHPExcel 1.7.9版本中添加的:以前的版本会返回一个字符串,其中“ - 之间的数字是相同的”,所以请检查您是否使用较早的版本PHPExcel的版本,因为我几分钟前刚刚运行的测试表明这对1.7.9版本的掩码工作正常。