使用 PHP Yii2 将 Excel 文件导入到 MySQL
Import Excel file to MySQL using PHP Yii2
我只想使用 PHPExcel 在 Yii2 中将数据从 excel (xls, xlsx) 导入到 mySql db。
这是我在控制器中的代码:
$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();
}
然后浏览器 return 一个错误通知,如 pathinfo() 期望参数 1 为字符串,给定资源 。请帮忙解决这个错误。
在您使用过的代码中
$inputFileType =\PHPExcel_IOFactory::identify($inputFiles);
用于识别有效的 excel 文件,它期望参数为 filename
。
我在你的代码中看到,你已经将 $inputFiles
作为参数传递给 identify
方法,这不是文件名而是资源处理程序。 identify
方法期望它是字符串(文件名)。
这就是您遇到错误的原因。
注意:fopen() returns 成功时为文件指针资源,错误时为 FALSE。
$inputFiles = fopen("../file/" . $modelFile->file, "r");
我只想使用 PHPExcel 在 Yii2 中将数据从 excel (xls, xlsx) 导入到 mySql db。 这是我在控制器中的代码:
$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();
}
然后浏览器 return 一个错误通知,如 pathinfo() 期望参数 1 为字符串,给定资源 。请帮忙解决这个错误。
在您使用过的代码中
$inputFileType =\PHPExcel_IOFactory::identify($inputFiles);
用于识别有效的 excel 文件,它期望参数为 filename
。
我在你的代码中看到,你已经将 $inputFiles
作为参数传递给 identify
方法,这不是文件名而是资源处理程序。 identify
方法期望它是字符串(文件名)。
这就是您遇到错误的原因。
注意:fopen() returns 成功时为文件指针资源,错误时为 FALSE。
$inputFiles = fopen("../file/" . $modelFile->file, "r");