2013-08-20 32 views
3

在PHP中,我正在通过excel文件循环并将其插入到MSSQL数据库中。我收到此错误:PHPExcel:将Excel插入到SQL数据库中时无效的单元格坐标A

未捕获的异常“PHPExcel_Exception”有消息“无效的单元坐标A”

,如果我只运行在循环的一个查询我没有得到这个错误。另外,两个查询都可以工作。所以我非常肯定它与2个查询正在运行的事实有关。使用以下代码,两个表中都插入一行,然后出现错误。有想法该怎么解决这个吗?

继承人的代码...

$dbc = odbc_connect(DB_DRIVER, DB_USER, DB_PASSWORD); 
$inputFileName = 'lib/test.xlsx'; 

try { 
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
    $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
    $objPHPExcel = $objReader->load($inputFileName); 
} catch(Exception $e) { 
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage()); 
} 

// Get worksheet dimensions 
$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn(); 

// Loop through each row of the worksheet in turn 
for ($row = 2; $row <= $highestRow; $row++){ 
// Read a row of data into an array 
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, 
           NULL, 
           TRUE, 
           FALSE); 

$name = ms_escape_string($rowData[0][0]); 
$city = ms_escape_string($rowData[0][2]); 
$state = ms_escape_string($rowData[0][3]); 
$phone = ms_escape_string($rowData[0][4]); 
$website = ms_escape_string($rowData[0][5]); 
$profit_status = ms_escape_string($rowData[0][6]); 

$query = "insert into account2 ([name], [city], [state], [phone], [website], [type], [created_by], [last_modified_by]) 
values ('$name', '$city', '$state', '$phone', '$website', '6', '3', '3') 
SELECT SCOPE_IDENTITY() AS ins_id"; 

$data = odbc_exec($dbc, $query); 

if (odbc_next_result($data)){ 
    while ($row = odbc_fetch_object($data)) { 
     $account_id = $row->ins_id; 
    } 
    $query = "insert into account_hic2 (account_id, profit_status) 
values ('$account_id', '$profit_status')"; 
} 
$data2 = odbc_exec($dbc, $query); 

odbc_free_result($data); 
odbc_free_result($data2); 
} 

回答

3

该错误消息表明,你是错误设置$行的值在某些时候,或许将其设置为空,或为空字符串.. 。

...或者也许是一个资源,如您使用的数据库相同的变量名在同一回路取,你正在使用它来跟踪Excel的行号

+1

党的纨绔子弟很好的发现。我在我的while循环中重复使用了$ row,并搞乱了这个变量。谢谢! – aeroshock

相关问题