使用PHPExcel读取excel依赖于另一个文件

时间:2016-01-14 18:56:22

标签: php excel phpexcel phpexcelreader

我开始使用PHPExcel来读取文件。

在我的第一步中,我会得到一部分文件,因为还有一个不是我的用处。我看到rangeToArray函数对此很有用。

就像测试一样,我试图从第A12行开始到第25行结束。

$sheetData = $objPHPExcel->getActiveSheet()->rangeToArray('A12:Y25');

返回如下内容:

array (size=14)
  0 => 
    array (size=25)
      0 => float 258500
      1 => string '#REF!' (length=5)
      2 => string 'Nº equivocado' (length=14)
      3 => string 'Nº equivocado' (length=14)
      4 => boolean false
      5 => boolean false
      6 => boolean false
      7 => boolean false
      8 => boolean false
      9 => boolean false
      10 => null
      11 => boolean false
      12 => string '#DIV/0!' (length=7)
      13 => string '166,056' (length=7)
      14 => float 0
      15 => string '11,070' (length=6)
      16 => string '1,510' (length=5)
      17 => string '12,580' (length=6)
      18 => string 'Transferencia' (length=13)
      19 => string 'Cheque' (length=6)
      20 => string '1/1/2016' (length=8)
      21 => string '1/31/2016' (length=9)
      22 => null
      23 => null
      24 => string 'EL COSTO ANUAL ES 10% SUPERIOR AL MENSUAL X 12, DEBIDO AL 10% DE COMISION DE FASCIOLI' (length=85)

但事实是数组中的某些值与包含某些单元格的值不匹配。

在图像捕获中选择了行,这是我尝试使用rangeToArray函数。

当我看到数组返回的值不完全是excel中单元格的字符串时,我决定尝试获取该特定单元格。

$sheetData = $objPHPExcel->getActiveSheet()->getCell('E12');

我可以看到单元格的内容存储在变量调用" calculatedValue"中。

object(PHPExcel_Cell)[3121]
  private 'value' => string '=IF($A12=$B12,VLOOKUP($A12,#REF!,2))' (length=36)
  private 'calculatedValue' => string 'PRINA EDIFICIO                ' (length=30)
  private 'dataType' => string 'f' (length=1)
  private 'parent' =>

然后我看到带有rangeToArray函数的单元格的值返回" boolean false"使用getCell函数,返回private' calculatedValue' =>字符串' PRINA EDIFICIO' (长度= 30)

我还可以看到这些单元格中填充了从另一个excel收集的值。

=SI($A12=$B12;CONSULTAV($A12;'C:\wamp\www\PHPExcel\Documentation\Examples\Reader\sampleData\[BASE_RETENIDOS.xls]BASE DE DATOS'!$B$5:$I$729;2))

这就是为什么我的问题是如果我可以在不依赖其他excel的情况下获得字符串格式的值。

由于

![EXCEL FILE, ROW TO GET] 1

1 个答案:

答案 0 :(得分:0)

PHPExcel无法访问外部电子表格或外部文件中的数据,这些数据甚至可能无法从您的网络服务器访问。

虽然getOldCalculatedValue()函数不以任何方式对此进行检查,但toArray()对于可能有帮助但可能没有帮助的单元格有一个“后备”选项。

getOldCalculatedValue()将返回包含公式的单元格中的值,该公式是上次在MS Excel本身中针对该单元格运行计算时....当然,在电子表格中可以在MS Excel中禁用计算已创建(在这种情况下,它可能是未填充的,或包含不反映计算可能使用的当前数据的旧值。如果它依赖于外部文件的数据,它可能不再是准确的计算结果,使它非常不可靠。

这是存储在单元格的calculatedValue属性中的值。