2016-11-17 44 views
2

我只是想使用PHPExcel将数据从excel(xls,xlsx)导入到Yii2中的mySql db。 这是我在控制器代码:使用PHP将Excel文件导入到MySQL 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); 

这是用来识别有效的Excel文件,并将其预计参数为filename

我可以在您的代码中看到,您已通过$inputFiles作为identify方法的参数,该方法不是文件名,而是资源处理程序。并且identify方法期望它是字符串(文件名)。

这就是你得到错误的原因。

注意:fopen()返回成功时的文件指针资源,错误时返回FALSE。

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

嗯,错误已解决。我只是按照你的指示。 我只是像这样'$ fileName =“../file/”添加新的行代码。 $ newTempModel->文件;'。 Thankyou somuch – Blackjack

+0

很高兴帮助你.. –