У меня возникла эта проблема, когда я пытался извлечь информацию из файлов Excel.Вот моя ситуация: у меня 34 файла Excel, которые я получил от разных пользователей.
Я использую PHP версии 5 для извлечения из файлов Excel.Мой сценарий будет зацикливаться для всех файлов и снова зацикливаться в соответствии с именем листа, и, наконец, зацикливаться снова в соответствии с адресами ячеек.
Проблема возникла, когда пользователи вошли в ячейку, например, для = = A1, что означаетпользователи, ссылающиеся на значение ячейки в другой ячейке, потому что оно имеет то же значение, что и ячейка A1.
Когда я зарегистрировался в mysql (поскольку я сохранил их для будущего использования), я обнаружил, что запись для конкретной ячейки идентичнас другой записью, полученной из той же ячейки, но в другом файле Excel.Я имел в виду, что, поскольку мой php-скрипт будет циклически переходить от одного файла к другому, при первом чтении PHPExcel, например, для ячейки C3, которая имеет какое-то значение 3000 долларов США, следующие файлы 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());
}
}
}
}
Я действительно надеюсь, что вы можете помочь мне здесь..
Заранее спасибо.