PHPExcel:将Excel插入SQL数据库时单元格坐标A无效

Posted

技术标签:

【中文标题】PHPExcel:将Excel插入SQL数据库时单元格坐标A无效【英文标题】:PHPExcel: Invalid cell coordinate A when inserting Excel into SQL database 【发布时间】:2013-08-20 22:48:33 【问题描述】:

php 中,我循环遍历一个 excel 文件并将其插入到 MSSQL 数据库中。我收到此错误:

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

如果我只在循环中运行其中一个查询,我不会收到此错误。另外,这两个查询都有效。所以我很确定这与两个查询正在运行有关。使用以下代码,两个表中都插入了一行,然后是错误。有关如何解决此问题的任何想法?

代码如下...

$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);

【问题讨论】:

【参考方案1】:

错误消息表明您在某些时候错误地设置了 $row 的值,可能将其设置为 null 或空字符串...

... 或者可能是资源,因为您在数据库中使用相同的变量名在您使用它来跟踪 Excel 行号的同一循环中获取

【讨论】:

该死的家伙,很好的发现。我在我的 while 循环中重用 $row 并弄乱了变量。谢谢!

以上是关于PHPExcel:将Excel插入SQL数据库时单元格坐标A无效的主要内容,如果未能解决你的问题,请参考以下文章

ThinkPHP3.2.3 PHPExcel读取excel插入数据库

phpexcel 合并单元格后插入图片 如何让图片居中

关于PHPExcel 导入导出大量数据及导入时判断是不是存在重复

phpexcel写入追加已有的excel文件

PHPExcel - 加载和写入后尝试插入图像时出错

PHPExcel将Excel数据导入数据库