phpExcel无法检索包含索引匹配函数的Excel单元格

时间:2016-12-13 06:18:17

标签: excel phpexcel

我需要将电子表格中的数据导入数据库。最初,我使用phpExcel将每个工作表导出为csv文件,但是只要有一个包含索引匹配函数的单元格,phpExcel就无法检索该单元格值。

= INDEX(Sheet 1中$ E $ 2:$ E $ 100中,MATCH(TRUE,EXACT(B16,工作表Sheet $ A $ 2:$ A $ 100),0))

然后我决定使用phpExcel的toArray(null,true,true,true)将数据直接从电子表格导出到数据库中,以将工作表加载到数组中。第二个参数($ calculateFormulas)为true,但是phpExcel仍然无法检索包含索引匹配函数的任何单元格的单元格值。

我在一篇文章中读到要谨慎使用$ objReader-> setReadDataOnly(true) - 我试了一下,但仍然没有运气。

一种解决方案是打开电子表格,复制每个工作表并粘贴特殊值作为值,但我认为toArray()中的$ calculateFormulas会这样做。解决方案不是很吸引人,因为我有大约50个电子表格,每个电子表格包含5个工作表,并且它们将定期进入:(

感激地收到任何建议。

1 个答案:

答案 0 :(得分:0)

我有同样的问题(不久前),但无法直接用PHPExcel解决它。相反,我在Excel文件中编辑了单元格,将原始公式除以不同的单元格。

最初我在每个单元格中都有这个公式(在这个例子中是C13):

  • = IF(INDEX(DatosIntel $ N $ 1:!$ N $ 77 MATCH(B13,DatosIntel $ H $ 1:!$ H $ 77,0))= 0,$ Y $ 1,1)

现在,我分为两部分(Q13和C13):

  • = MATCH(B13,DatosIntel $ H $ 1:!$ H $ 77,0)
  • = IF(INDEX(DatosIntel $ N $ 1:!$ N $ 77 Q13,0)= 0,$ Y $ 1,1)

我甚至使用PHPExcel为C13编写了新内容:

  • $ objTpl-> getActiveSheet() - > setCellValue(' C13',' = IF(INDEX(DatosIntel!$ N $ 1:$ N $ 77,Q13,0)= 0 ,$ Y $ 1,1)&#39);

似乎无法使用PHPExcel正确解析包含在一个单元格中的复杂公式。

我希望这会有所帮助。