Не читаются строки в Excel2007.php Строка 951, код: $value = $sharedStrings[intval($c->v)];

310
06 декабря 2021, 17:30

При прогоне xlsx файла через PHPExcel выдает ошибки типа:

Notice: Undefined offset: 0... в файле Excel2007.php

Строка: $value = $sharedStrings[intval($c->v)];

При этом, если взять оригинальный файл xlsx и просто пересохранить в Excel - все читается без ошибок.

Про типы данных Shared и InlineStr читал, но не пойму, как узнать, какие ячейки к какому типу принадлежат. Вывод данных в ходе выполнения скрипта включал - везде определяет как Shared, но тем не менее...

Подскажите, пожалуйста, как можно выявить причину ошибки, и как ее устранить.

UPD:

Кусок кода:

    `switch ($cellDataType) {
        case "s":
//          echo 'String<br />';
            if ((string)$c->v != '') {
            $value = $sharedStrings[intval($c->v)];
            if ($value instanceof PHPExcel_RichText) {
                    $value = clone $value;
            }
            } else {
            $value = '';
            }
            break;
        case "b":
//          echo 'Boolean<br />';
                if (!isset($c->f)) {
                    $value = self::_castToBool($c);
                                            } else {
                // Formula
                    $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToBool');
                    if (isset($c->f['t'])) {
                        $att = array();
                        $att = $c->f;
                        $docSheet->getCell($r)->setFormulaAttributes($att);
                        }
//          echo '$calculatedValue = '.$calculatedValue.'<br />';
            }
                        break;
                case "inlineStr":
//                  echo 'Inline String<br />';
                    $value = $this->_parseRichText($c->is);
                    break;
                case "e":
//                  echo 'Error<br />';
                    if (!isset($c->f)) {
                        $value = self::_castToError($c);
                        } else {
                        // Formula
                        $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToError');
//              echo '$calculatedValue = '.$calculatedValue.'<br />';
                                            }
                break;
                default:
//                  echo 'Default<br />';
                    if (!isset($c->f)) {
//                  echo 'Not a Formula<br />';
                    $value = self::_castToString($c);
                    } else {
//                  echo 'Treat as Formula<br />';
                    // Formula
                    $this->_castToFormula($c,$r,$cellDataType,$value,$calculatedValue,$sharedFormulas,'_castToString');
//                  echo '$calculatedValue = '.$calculatedValue.'<br />';
                                            }
                    break;
                                    }`
READ ALSO
Статистика посещаемости на сайте

Статистика посещаемости на сайте

Задумка ввести свою статистику посещаемости на сайте

277
Слишком сложный SQL запросс

Слишком сложный SQL запросс

У меня есть библиотека, в ней есть книги в оригинале (для каждой книги разный язык) и к ним (не ко всем) есть книги которые переведены на другие...

67
Как узнать номер кликнутого элемента?

Как узнать номер кликнутого элемента?

Есть список и параграфы (к примеру):

274
Discord.js не меняет название канала

Discord.js не меняет название канала

Идея бота в дискорде такова, что при включении он меняет название голосового канала на количество участников на сервере, но он этого почему...

161