我正在使用PHPExcel更新eshop的商品价格和库存,将数据传递给mysql查询并更新数据库。 我遇到一些包含格式为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>';
答案 0 :(得分:0)
我没有使用PHPExcel,但为什么不更改此$val[] = $cell->getCalculatedValue();
以获取字符串值,然后将,
替换为.
&amp;将变量转换为整数并将其存储在另一个变量/数组中?我打赌这会奏效。
答案 1 :(得分: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()将在您加载时显示每行的值和数据类型。用于调试目的