Мне нужно импортировать данные из электронных таблиц в базу данных. Первоначально я использовал phpExcel для экспорта каждого рабочего листа в виде файла csv, но везде, где была ячейка, содержащая функцию соответствия индексу, phpExcel не смог получить это значение ячейки.phpExcel не может извлекать ячейки Excel, содержащие функцию соответствия индексу
= INDEX (Лист1 $ E $ 2: $ E $ 100, MATCH (TRUE, EXACT (B16, Лист1 $ A $ 2: $ A $ 100), 0))
Затем я решил экспортировать данные непосредственно из электронной таблицы в базу данных, используя phpExcel's toArray (null, true, true, true) для загрузки рабочего листа в массив. Второй параметр ($ calculateFormulas) является истинным, но phpExcel по-прежнему не может получить значение ячейки для любой ячейки, содержащей функцию индекса соответствия.
Я прочитал в одном посте, чтобы использовать $ objReader-> setReadDataOnly (true) с осторожностью - я дал ему ход, но все равно не повезло.
Одно из решений заключается в том, чтобы открыть таблицу, скопировать каждый лист и вставить специальные значения, но я подумал, что это будет делать $ calculateFormulas в toArray(). Решение не очень привлекательным, как у меня есть около 50 таблиц каждая из которых содержит 5 листов, и они будут приходить на регулярной основе :(
Любые предложения с благодарностью получил.
Большое спасибо за ответ - не похоже, что многие люди столкнулись с этой проблемой. Я считаю, что ваш подход к расколу формулы работает? – Crookers
Да, это сработало для меня. Аналогичную проблему вы найдете, если попытаетесь объединить более двух строк с помощью «&». Например: = A2 & "text" & B5 ... PhpExcel оставит = A2 и "текст". Но это можно решить с помощью функции Concatenate. – jjavierv