PHPExcel - Значение ячейки, ссылающейся на другую ячейку, не получено должным образом

У меня возникла эта проблема, когда я пытался извлечь информацию из файлов Excel. Вот моя ситуация, у меня есть 34 файла Excel, которые я получил от разных пользователей.

Я использую PHP версии 5 для извлечения из файлов Excel. Мой сценарий будет зацикливаться для каждого файла, и снова зацикливаться в соответствии с именем листа, и, наконец, зацикливаться снова в соответствии с адресами ячеек.

Проблема возникла, когда пользователи вошли в ячейку, например, для = + A1, что означает, что пользователи, ссылающиеся на значение ячейки в другой ячейке, потому что оно имеет то же значение, что и ячейка A1

Когда я зарегистрировался в MySQL (так как я сохранил их для будущего использования), я обнаружил, что запись для конкретной ячейки идентична другой записи, полученной из той же ячейки, но в другом файле Excel. Я имел в виду, что, поскольку мой php-скрипт будет циклически переходить от одного файла к другому файлу, в первый раз, когда PHPExcel считывает, например, ячейку C3, которая имеет значение USD3,000.00, следующие файлы PHPExcel могут перейти в ту же ячейку C3, но на этот раз ячейка C3 содержит формулу, которая ссылается на ячейку A1 (формула "= + A1"), которая имеет значение 5000 000 долларов США.

PHP-сценарий предполагает запись в MySQL за 5000 долларов США, но это не так. Я подозреваю, что скрипт PHPExcel не очистил переменную в первом раунде. Я попытался unset ($ objPHPExcel) и уничтожить переменную, но это все еще происходит.

Моя кодировка проста следующим образом:

if(file_exists($inputFileName))
                                    {
                                        $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
                                        $objReader = PHPExcel_IOFactory::createReader($inputFileType);
                                        $objReader->setReadDataOnly(true);
                                        $objPHPExcel = $objReader->load($inputFileName);

                                        //to obtain date from FILE and store in DB for future comparison
                                        $validating_date_reporting = $objPHPExcel->getSheet(0)->getCell('C10')->getValue();
                                        $validating_date_reporting = PHPExcel_Style_NumberFormat::toFormattedString($validating_date_reporting,"YYYY-MMM-DD");
                                        $validating_date_reporting = date('Y-m-d',strtotime($validating_date_reporting));

                                        //first entry
                                        $entry = mysql_query('INSERT INTO `'.$table.'`(`broker_code`, `date`, `date_from_submission`) VALUES("'.$broker_code.'","'.$reporting_date.'","'.$reporting_date.'")') or die(mysql_error());

                                        foreach($cells_array as $caRef=>$sName)
                                        {
                                            foreach($sName as $sNameRef=>$cells)
                                                {

                                                    $wksht_page = array_search($caRef, $sheetNameArray);
                                                    $cell_column = $wksht_page.'_'.$cells;
                                                    echo $inputFileName.' '.$caRef.' '.$cell_column.'<br>';
                                                    $value = $objPHPExcel->setActiveSheetIndexByName($caRef)->getCell($cells)->getCalculatedValue();

                                                    echo $value.'<br>';

                                                        if($value)
                                                        {
                                                            $isdPortal->LoginDB($db_periodic_submission);
                                                            $record = mysql_query('UPDATE `'.$table.'` SET `'.$cell_column.'` = "'.$value.'" WHERE broker_code = "'.$broker_code.'" AND date_from_submission = "'.$validating_date_reporting.'"') or die(mysql_error());

                                                        }

                                                }

                                        }


                                    }

Я действительно надеюсь, что вы можете помочь мне здесь ..

заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос