Excelから情報を抽出しようとしたときにこの問題が発生しました。ここに私の状況は、私は私が様々なユーザーから受け取った34のExcelファイルがあります。PHPExcel - 別のセルを参照するセルからの値が正しく取得されなかった
私はExcelファイルから抽出するためにPHPバージョン5を使用しています。私のスクリプトはすべてのファイルに対してループし、シート名に従ってループし、最後にセルのアドレスに従って再びループします。
ユーザが、例えば、セルに入力したときに問題が発生しました。 = + A1これは、セルA1と同じ値を持つため、セル値を別のセルに参照しているユーザーを意味します。
特定のセルのレコードから見つかったものは、同じセルから取得した別のレコードと同じですが、別のExcelファイルで取得したものです。私が意味することは、私のPHPスクリプトが1つのファイルから別のファイルにループするので、PHPExcelが例えばC3のような値を持っていることを初めて読み取ったときです。次のファイルであるPHPExcelは同じセルC3に行くかもしれませんC3セルには、値がUSD5,000.00のセルA1(「= + A1」の式)を参照する数式が含まれています。
PHPスクリプトは、mysqlでUSD5,000.00を記録するとしますが、そうしなかったとします。私は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());
}
}
}
}
私は本当にあなたがここに私を助けることができることを願っています。..
は、事前にあなたに感謝し、次のよう
私のコーディングは簡単です。
こんにちは。それは本当に働いています。 –
PHPExcel_Calculation :: getInstance($ sheet-> getParent()) - > clearCalculationCache(); – CrandellWS