2011-08-24 8 views
3

PHPExcel로 XLSX 시트를 읽고 MySQL 테이블에 내용을 제공하려고합니다. 여기 PHPExcel : 셀을 읽는 중 오류가 발생했습니다.

Fatal error: Uncaught exception 'Exception' with message 'Cell coordinate must not be absolute.' in C:\Program Files\EasyPHP-5.3.3\www\alliance_run\phpexcel\Classes\PHPExcel\Worksheet.php:954 Stack trace: #0 C:\Program Files\EasyPHP-5.3.3\www\alliance_run\__essai_DB.php(22): PHPExcel_Worksheet->getCell('$col.$row') #1 {main} thrown in C:\Program Files\EasyPHP-5.3.3\www\alliance_run\phpexcel\Classes\PHPExcel\Worksheet.php on line 954 

내 코드입니다 :

내 문제는 XLSX을 읽는 동안, 나는 다음과 같은 오류 메시지가 있다는 것입니다

: 문제는이 라인에있을 것 같다

mysql_connect("localhost", "root", ""); 
mysql_select_db("alliance_run"); 
// vidage de la table test_equipement 
$query1 ="TRUNCATE TABLE `test_equipement` "; 
$resultat = mysql_query($query1); 

require_once 'phpexcel/Classes/PHPExcel.php'; 
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); 
$objReader->setReadDataOnly(true); 

$objPHPExcel = $objReader->load("edf/equipement.xlsx"); 
$objWorksheet = $objPHPExcel->getActiveSheet(); 

$highestRow = $objWorksheet->getHighestRow(); 
$highestColumn = $objWorksheet->getHighestColumn(); 

$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 

for ($row = 1; $row <= $highestRow; ++$row) { 
    for ($col = 1; $col <= $highestColumnIndex; ++$col) { 
    $str.=$objPHPExcel->getActiveSheet()->getCell('$col.$row')->getValue().'\\'; 
} 
$strs=explode("\\",$str); 

$query ="INSERT INTO test_equipement (numero_serie, code_site, code_produit, tag, date_installation, date_acceptation, code_fournisseur, client) VALUES ('". 
$strs[0]."','". // numero_serie 
$strs[1]."','".// code_site 
$strs[2]."','".// code_produit 
$strs[3]."','".// tag 
$strs[4]."','".// date_installation 
$strs[5]."','".// date_acceptation 
$strs[6]."','".// code_fournisseur 
$strs[7]."')";// client 

mysql_query($query); 
} 

$str.=$objPHPExcel->getActiveSheet()->getCell('$col.$row')->getValue().'\\'; 

다른 성공 코드없이 다음 코드를 시도했습니다.

$str.=$objPHPExcel->getActiveSheet()->getCell($col$row)->getValue().'\\'; 
$str.=$objPHPExcel->getActiveSheet()->getCell('$col.$row')->getValue().'\\'; 
$str.=$objPHPExcel->getActiveSheet()->getCell("$col.$row")->getValue().'\\'; 
$str.=$objPHPExcel->getActiveSheet()->getCell($col.$row)->getValue().'\\'; 
$str.=$objPHPExcel->getActiveSheet()->getCell('$col$row')->getValue().'\\'; 
$str.=$objPHPExcel->getActiveSheet()->getCell("$col$row")->getValue().'\\';` 

정확하게 말해서 내 XSLX 시트가 깨끗합니다.

누군가 문제를 겪고 해결 했습니까?

감사합니다.

답변

3

루프가 셀 11과 12를 얻으려고합니다. 그러나 내가 기억하는 한 getCell() 메서드는 A1, A2와 같은 값을 필요로합니다.

따라서 getCellByColumnAndRow($col,$row) 메서드를 사용해야합니다. 사용하는 당신이 $의 안부와 $ 행의 값을 큰 따옴표가 있어야

$str.=$objPHPExcel->getActiveSheet()->getCell('$col.$row')->getValue() 

0

코드가 있습니다. 그렇지 않으면

$str.=$objPHPExcel->getActiveSheet()->getCell("$col.$row")->getValue() 
해야 문자열로 '$ COL. $ 행을'사용
관련 문제