2016-11-17 1 views
2

PHPExcel을 사용하여 Excel (xls, xlsx)의 데이터를 Yii2의 mySql 데이터베이스로 가져 오려고합니다. 이것은 컨트롤러에 내 코드입니다 :PHP를 사용하여 MySQL로 Excel 파일 가져 오기 Yii2

$modelFile ->file = $firstName. '_' .$middleName. '_' .date('Y-m-d'). '_' .$file ->getBaseName(). "." .$file ->getExtension(); 
$objPHPExcel = new \PHPExcel(); 
$inputFiles = fopen("../file/".$modelFile ->file, "r"); 

try { 
    $inputFileType = \PHPExcel_IOFactory::identify($inputFiles); 
    $objReader = \PHPExcel_IOFactory::createReader($inputFileType); 
    $objPHPExcel = $objReader ->load($inputFiles); 
} catch (Exception $ex) { 
    die('Error'); 
} 

$sheet = $objPHPExcel ->getSheet(0); 
$highestRow = $sheet ->getHighestRow(); 
$highestColumn = $sheet ->getHighestColumn(); 

//$row is start 2 because first row assigned for heading.   
for ($row = 2; $row <= $highestRow; ++$row) { 

    $rowData = $sheet ->rangeToArray('A'.$row. ':' .$highestColumn.$row, NULL, TRUE, FALSE); 

    //save to branch table. 
    $modelHeader = new FakturOut(); 
    $modelDetail = new FakturOutDetail(); 

    $modelHeader ->name = $rowData[0][0]; 
    $modelHeader ->age = $rowData[0][1]; 
    $modelHeader ->address = $rowData[0][2]; 
    $modelHeader ->academic_id = $rowData[0][3]; 
    $modelHeader ->mother_name = $rowData[0][4]; 
    $modelHeader ->father_Name = $rowData[0][5]; 
    $modelHeader ->gender = $rowData[0][6]; 
    $modelHeader ->height = $rowData[0][7]; 
    $modelHeader ->weight= $rowData[0][8]; 
    $modelHeader ->save(); 
} 

그리고 브라우저) (의 PathInfo 같은 오류 알림을 반환 매개 변수 1 문자열, 자원를 제공 할 것으로 기대하고있다. 이 오류를 해결하는 데 도움주세요. 코드에서

답변

0

은 당신은 유효한 엑셀 파일을 식별하는 데 사용되는

$inputFileType =\PHPExcel_IOFactory::identify($inputFiles); 

을 사용하고는 filename로 매개 변수를 기대하고있다.

당신의 코드에서 $inputFiles을 매개 변수로 identify 메서드에 전달했습니다.이 메서드는 파일 이름은 아니지만 리소스 처리기입니다. identify 메서드는 문자열 (파일 이름)이 될 것으로 예상합니다.

오류가 발생하는 이유입니다.

참고 : fopen()은 성공시 파일 포인터 리소스를 반환하고 오류가 발생하면 FALSE를 반환합니다.

$inputFiles = fopen("../file/" . $modelFile->file, "r"); 
+0

예, 오류가 해결되었습니다. 나는 너의 지시를 따를 뿐이다. '$ fileName = "../file/"과 같은 줄 바꿈 코드를 추가하기 만하면됩니다. $ newTempModel-> file;'. Thankyou somuch – Blackjack

+0

당신을 도울 수있어서 기쁘다 .. –