0

PHPExcel を使用して、e ショップのアイテムの価格と在庫を更新し、データを mysql クエリに渡し、DB を更新しています。123,45 の形式の数値を含む一部のセルに問題があります (小数点記号としてコンマを使用)。すべてのセルに同じ形式が含まれていますが、一部のみが正しく読み取られています。自分で調べて、何が欠けているか教えてください。

そして最後に、私のコード:

    $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>';
4

2 に答える 2

0
$rowsadded=0;
$begin_row=2; // 1st line of data in excel file
for ($row = $begin_row; $row <= $highestRow; ++ $row) {
    $val = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,NULL,TRUE,FALSE,TRUE);
    var_dump($val);
    $val = $val[$row];

    if (($val['A']<>'') && ($val['G']>0)) { //check that row contains data before inserting
        $rowsadded++;
        // other code goes in here
    } //end of checking that row contains data before inserting

} echo '<h2>'.$rowsadded. ' rows updated successfully</h2>';

var_dump() は、ロード時に各行の値とデータ型を表示します。これをデバッグ目的で使用します

于 2012-06-21T16:20:03.193 に答える
0

私はPHPExcelを使用していませんが、これを変更し$val[] = $cell->getCalculatedValue();て文字列値を取得,し、.& 変数を整数としてキャストして別の変数/配列に格納しないのはなぜですか? これはうまくいくに違いない。

于 2012-06-21T15:16:49.790 に答える