Читать Excel с PHPExcel зависит от другого файла

Я начал работать с PHPExcel, чтобы прочитать файл.

На моих первых шагах я получил бы часть файла, потому что есть еще одна, которая мне не нужна. Я видел, что функция rangeToArray была полезна для этого.

В качестве теста я попытался получить от начала строки A12 до конца в Y25.

$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');

И я мог видеть, что содержимое ячейки хранится в переменной, называемой "selectedValue".

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 возвращает "логическое ложное" с функцией getCell, возвращает как частное значение "selectedValue" => строка "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 ответ

Нет никакого способа, которым PHPExcel может получить доступ к данным из внешней электронной таблицы или внешнего файла, которые могут быть, а могут и не быть доступны с вашего веб-сервера.

Существует "запасной" вариант для getOldCalculatedValue() для клетки, которая может или не может помочь, хотя toArray() функция не проверяет это никак.

getOldCalculatedValue() вернет значение из ячейки, содержащей формулу, с момента последнего запуска вычисления для этой ячейки в самом MS Excel.... конечно, вычисление может быть отключено в MS Excel при создании электронной таблицы (в этом случае это может быть незаполненным или содержать старые значения, которые не отражают текущие данные, которые иначе могли бы использовать вычисления, и если они основаны на данных из внешних файлов, они могут перестать быть точным вычисленным результатом, что делает его крайне ненадежным.

Это значение, которое хранится в calculatedValue свойство клетки.

Другие вопросы по тегам