我想在excel文件中将一些信息写入我的数据库。 excel文件看起来像这样。
ID123 | subj1 | 50
ID456 | subj2 | 60ID786 | subj3 | 70
这是视图中触发控制器功能的功能。
<a href="http://localhost/SEP/index.php/con_test/readExcel"> Click me </a>
这是控制器中的代码。
public function readExcel(){
$inputFileName = 'C:\wamp\www\SEP\uploads\Format.xlsx';
// Read your Excel workbook
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 = 1; $row <= $highestRow; $row++){
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL,
TRUE,
FALSE);
// Insert row data array into your database of choice here
$this->mod_test->insertMarks($rowData);
}
}
另外,我已将include '../third_party/PHPExcel/IOFactory.php';
包含在控制器的顶部,即时使用。
这是模型中的代码。
public function insertMarks($data){
$this->db->insert('marks', $data);
return;
}
这是我第一次使用它。我没有得到任何错误,并且数值也没有插入到数据库中。请帮我解决一下这个。
答案 0 :(得分:0)
从rangeToArray
($rowData
)调用返回的是一个二维数组,即使对于一行....我猜你可能想把它变平为一个将1d数组传递给insertMarks()
$this->mod_test->insertMarks($rowData[0]);
答案 1 :(得分:0)
试试这个
<?php
include ("./Classes/PHPExcel/IOFactory.php");
$inputFileName = './marks.xlsx';
// Read your Excel workbook
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());
}
$sheetInsertData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);
//Read excel rows
foreach($sheetInsertData as $rec)
{
//If you want row as a array use $rec
$this->mod_test->insertMarks($rec);
//Get column values from row array
/*foreach($rec as $recm)
{
echo $recm."<br>";
}*/
}
?>