2016-12-13 61 views
0

我需要將電子表格中的數據導入數據庫。最初,我使用phpExcel將每個工作表導出爲一個csv文件,但無論何處存在包含索引匹配功能的單元格,phpExcel都無法檢索該單元格值。phpExcel無法檢索包含索引的Excel單元格 - 匹配函數

= INDEX(工作表Sheet1 $ E $ 2:$ E $ 100 MATCH(TRUE,EXACT(B16的Sheet1 $ A $ 2:$ A $ 100),0))

我再決定導出數據直接從電子表格導入數據庫,使用phpExcel的toArray(null,true,true,true)將工作表加載到數組中。第二個參數($ calculateFormulas)爲true,但phpExcel仍然無法檢索包含索引 - 匹配函數的單元格的單元格值。

我在一篇文章中閱讀,謹慎使用$ objReader-> setReadDataOnly(true) - 我放棄了它,但仍然沒有運氣。

一個解決方案是打開電子表格,複製每個工作表並粘貼特殊的值,但我認爲toArray()中的$ calculateFormulas會做到這一點。該解決方案是不是很吸引人,因爲我有大約50電子表格每片含5個工作表,他們將是未來在定期:(

任何建議感激地接受。

回答

0

我有同樣的問題(幾但我不能直接用PHPExcel解決它,而是我編輯Excel文件中的單元格,將原始公式分成不同的單元格

原來我在每個單元格中都有這個公式(在本例中爲C13) :

  • = IF(INDEX(DatosIn電話!$ N $ 1:$ N $ 77,MATCH(B13,DatosIntel!$ H $ 1:$ H $ 77,0))= 0,$ y $ 1,1)

現在,我分成兩份和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)');

似乎一個單元格中包含的複雜公式無法正確解析爲使用PHPExcel進行讀取。

我希望這會有所幫助。

+0

非常感謝您的答覆 - 看起來不像許多人有這個問題。我認爲你的方法分裂公式工作? – Crookers

+0

是的,它爲我工作。如果嘗試使用「&」連接多於2個字符串,則會發現類似的問題。例如:= A2&「text」&B5 ... PhpExcel將離開= A2和「文本」。但是這可以使用Concatenate函數來解決。 – jjavierv