我想在codeigniter中将excel文件导入mysql?

时间:2015-08-14 06:23:48

标签: mysql codeigniter import-from-excel

我想将excel文件导入mysql.i在db中创建一个表,该表的名称是statement.please指导我

myController的

 function my_test()
        {
                $table = 'statement';
        $filename ='expense.xls';

      $pathToFile = './uploads/' . $filename;

    //           print_r($pathToFile);die;
               $valuesSql="";
                $this->load->library('Excel_Reader');
                $data = new Excel_Reader($pathToFile);
                $sql = "INSERT INTO $table (";
                for($index = 1;$index <= $data->sheets[0]['numCols']; $index++){
                $sql.= strtolower($data->sheets[0]['cells'][1][$index]) . ", ";
                }

                $sql = rtrim($sql, ", ")." ) VALUES ( ";
                for ($i = 2; $i <= $data->sheets[0]['numRows']; $i++) {
                $valuesSQL = '';
                for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {
                $valuesSql .= "\"" . $data->sheets[0]['cells'][$i][$j] . "\", ";
                }
                echo $sql . rtrim($valuesSql, ", ")." ) <br>";
                }                                           // add this line


        }                        



    }

我的观看页面是

<html>
<head>
<title>Upload Form</title>
</head>
<body>

<?php // echo $error;?>

<?php echo form_open_multipart('Upload_c/my_test');?>

<input type="file" name="file_name" size="20" />

<br /><br />

<input type="submit" name="up" value="upload" />

</form>

</body>
</html>

当我点击视图页面中的上传按钮时,它显示的错误如下

A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 0

Filename: controllers/Upload_c.php

Line Number: 33

A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 0

Filename: controllers/Upload_c.php

Line Number: 38

2 个答案:

答案 0 :(得分:1)

尝试PHPEXCEL而不是EXCEL_READER ...

答案 1 :(得分:0)

请在此示例中尝试此操作您不需要任何库,它将在没有任何库的情况下工作 -

我的查看文件(index.php) -

<form class="form-horizontal well" action="<?php echo base_url(); ?>index.php/welcome/import" method="post" name="upload_excel" enctype="multipart/form-data">
<input type="file" name="file" id="file" class="input-large">
<button type="submit" id="submit" name="Import" class="btn btn-primary button-loading">Upload</button>
</form>

我的模型(welcome_model.php) -

<?php 
class Welcome_model extends CI_Model
    {
        public function insertCSV($data)
            {
                $this->db->insert('subject', $data);
                return $this->db->insert_id();
            }
    }
?>

我的控制器(welcome.php) -

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Welcome extends CI_Controller {

    public function index()
        {
            $this->load->model('welcome_model');
            $this->load->view('index');
        }

    public function import()
        {
          if(isset($_POST["Import"]))
            {
                $filename=$_FILES["file"]["tmp_name"];
                if($_FILES["file"]["size"] > 0)
                  {
                    $file = fopen($filename, "r");
                     while (($emapData = fgetcsv($file, 10000, ",")) !== FALSE)
                     {
                            $data = array(
                                'SUBJ_CODE' => $emapData[1],
                                'SUBJ_DESCRIPTION' => $emapData[2],
                                'UNIT' => $emapData[3],
                                'PRE_REQUISITE' => $emapData[4],
                                'COURSE_ID' => $emapData[5],
                                'AY' => $emapData[6],
                                'SEMESTER' => $emapData[7],
                                );
                        $this->load->model('welcome_model');
                        $insertId = $this->welcome_model->insertCSV($data);
                     }
                    fclose($file);
                    redirect('welcome/index');
                  }
            }
        }
}

请尝试这个它肯定会工作..