使用带有Codeigniter的PHPExcel读取excel文件并写入数据库

时间:2015-11-13 02:00:27

标签: php excel codeigniter phpexcel

我想在excel文件中将一些信息写入我的数据库。 excel文件看起来像这样。

ID123 | subj1 | 50

ID456 | subj2 | 60

ID786 | 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;
}

这是我第一次使用它。我没有得到任何错误,并且数值也没有插入到数据库中。请帮我解决一下这个。

2 个答案:

答案 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>";
          }*/
      }
?>