PHPExcel を使用して、e ショップのアイテムの価格と在庫を更新し、データを mysql クエリに渡し、DB を更新しています。123,45 の形式の数値を含む一部のセルに問題があります (小数点記号としてコンマを使用)。すべてのセルに同じ形式が含まれていますが、一部のみが正しく読み取られています。自分で調べて、何が欠けているか教えてください。
- Excel サンプル データ: http://dl.dropbox.com/u/25322282/data.xlsx
- データのループからログを取り、読み取った内容を印刷して、価格が 66 行目以降しか読み取られていないことを確認します。http://dl.dropbox.com/u/25322282/log.htm
そして最後に、私のコード:
$objPHPExcel = PHPExcel_IOFactory::load($path);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
$nrColumns = ord($highestColumn) - 64;
$rowsadded=0;
$begin_row=2; // 1st line of data in excel file
for ($row = $begin_row; $row <= $highestRow; ++ $row) {
$val=array();
for ($col=0; $col < $highestColumnIndex; $col++) {
$cell = $objWorksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getCalculatedValue();
}
if (($val[0]<>'') && ($val[6]>0)) { //check that row contains data before inserting
$rowsadded++;
$sql = sprintf("update productsizes set price=%s, stock=%s where auxcode=%s",
GetSQLValueString($val[6], "float"),
GetSQLValueString($val[4], "int"),
GetSQLValueString($val[0], "text"));
$result = mysql_query($sql) or die(mysql_error());
} //end of checking that row contains data before inserting
} echo '<h2>'.$rowsadded. ' rows updated successfully</h2>';