首頁  >  文章  >  後端開發  >  Excel檔案匯入資料到MySQL資料庫的方法實例

Excel檔案匯入資料到MySQL資料庫的方法實例

小云云
小云云原創
2018-03-09 14:04:382879瀏覽

最近在做Excel檔案匯入資料到資料庫。網站如果想支援批次插入數據,可以製作上傳Excel文件,匯入裡面的資料內容到MySQL資料庫的小程式。本文主要和大家分享Excel檔案匯入資料到MySQL資料庫的方法實例,希望能幫助大家。

要用到的工具:

ThinkPHP:輕量級國產PHP開發架構。可於ThinkPHP官網下載。

PHPExcel:Office Excel 文件的一個PHP類別庫,它是基於微軟的OpenXML標準和PHP語言。可在CodePlex官網下載。 、

1.設計MySQL資料庫product

建立product資料庫



#
CREATE DATABASE product DEFAULTCHARACTER SET utf8 COLLATE utf8_general_ci;

建立pro_info表,表結構


CREATE TABLE pro_info(
pId int(4)NOT NULL PRIMARY KEY AUTO_INCREMENT,
pName varchar(20)NOT NULL,
pPrice floatNOT NULL,
pCount floatNOT NULL
);

2.產生專案
先在ThinkPHP同級目錄下新建index.php文件,產生專案Home.

<?php
  
define(&#39;APP_NAME&#39;,&#39;Home&#39;);  //项目名称
define(&#39;APP_PATH&#39;,&#39;./Home/&#39;); //项目路径
define(&#39;APP_DEBUG&#39;, true);  //开启DEBUG
require &#39;./ThinkPHP/ThinkPHP.php&#39;;  //引入ThinkPHP核心运行文件
?>

#3.上傳檔案表單

在Home/Tpl資料夾下新Index資料夾,裡面新index.html檔案

<!DOCTYPE html>
  
<html>
  <head>
    <title>上传文件</title>
    <metacharset="UTF-8">
  </head>
  <body>
    <formid="upload"action="__URL__/upload/"method="post"enctype="multipart/form-data">
      <labelfor="file">上传文件:</label>
      <inputtype="file"name="file"id="file"><br/>
      <inputtype="submit"name="submit"value="上传"/>
    </form>
  </body>
</html>

###4.在/Home/Lib/Action/IndexAction.class.php中編寫顯示上傳表單頁面、上傳Excel檔案、匯入Excel檔案方法(如果ThinkPHP/Extend下沒有擴充包,需要在ThinkPHP官網下載,然後將擴充包解壓縮放入)#########################
<?php
  
/**
*
* 导入Excel文件数据到MySQL数据库
*/
class IndexAction extends Action {
  
  /**
   * 显示上传表单html页面
   */
  publicfunction index() {
    $this->display();
  }
  
  /**
   * 上传Excel文件
   */
  publicfunction upload() {
    //引入ThinkPHP上传文件类
    import(&#39;ORG.Net.UploadFile&#39;);
    //实例化上传类
    $upload= new UploadFile();
    //设置附件上传文件大小200Kib
    $upload->mixSize = 2000000;
    //设置附件上传类型
    $upload->allowExts =array(&#39;xls&#39;,&#39;xlsx&#39;, &#39;csv&#39;);
    //设置附件上传目录在/Home/temp下
    $upload->savePath =&#39;./Home/temp/&#39;;
    //保持上传文件名不变
    $upload->saveRule =&#39;&#39;;
    //存在同名文件是否是覆盖
    $upload->uploadReplace = true;
    if(!$upload->upload()) { //如果上传失败,提示错误信息
      $this->error($upload->getErrorMsg());
    }else {  //上传成功
      //获取上传文件信息
      $info= $upload->getUploadFileInfo();
      //获取上传保存文件名
      $fileName= $info[0][&#39;savename&#39;];
      //重定向,把$fileName文件名传给importExcel()方法
      $this->redirect(&#39;Index/importExcel&#39;,array(&#39;fileName&#39;=> $fileName), 1,&#39;上传成功!&#39;);
    }
  }
  
  /**
   *
   * 导入Excel文件
   */
  publicfunction importExcel() {
    header("content-type:text/html;charset=utf-8");
    //引入PHPExcel类
    vendor(&#39;PHPExcel&#39;);
    vendor(&#39;PHPExcel.IOFactory&#39;);
    vendor(&#39;PHPExcel.Reader.Excel5&#39;);
  
    //redirect传来的文件名
    $fileName= $_GET[&#39;fileName&#39;];
  
    //文件路径
    $filePath= &#39;./Home/temp/&#39; . $fileName . &#39;.xlsx&#39;;
    //实例化PHPExcel类
    $PHPExcel= new PHPExcel();
    //默认用excel2007读取excel,若格式不对,则用之前的版本进行读取
    $PHPReader= new PHPExcel_Reader_Excel2007();
    if(!$PHPReader->canRead($filePath)) {
      $PHPReader= new PHPExcel_Reader_Excel5();
      if(!$PHPReader->canRead($filePath)) {
        echo&#39;no Excel&#39;;
        return;
      }
    }
  
    //读取Excel文件
    $PHPExcel= $PHPReader->load($filePath);
    //读取excel文件中的第一个工作表
    $sheet= $PHPExcel->getSheet(0);
    //取得最大的列号
    $allColumn= $sheet->getHighestColumn();
    //取得最大的行号
    $allRow= $sheet->getHighestRow();
    //从第二行开始插入,第一行是列名
    for($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
      //获取B列的值
      $name= $PHPExcel->getActiveSheet()->getCell("B". $currentRow)->getValue();
      //获取C列的值
      $price= $PHPExcel->getActiveSheet()->getCell("C". $currentRow)->getValue();
      //获取D列的值
      $count= $PHPExcel->getActiveSheet()->getCell("D". $currentRow)->getValue();
  
      $m= M(&#39;Info&#39;);
      $num= $m->add(array(&#39;pName&#39;=> $name,&#39;pPrice&#39; => $price, &#39;pCount&#39;=> $count));
    }
    if($num > 0) {
      echo"添加成功!";
    }else {
      echo"添加失败!";
    }
  }
  
}
?>
############################################################## ###5.測試###############相關推薦:#############分享csv匯入資料到mysql實例####### #####匯入資料到mysql的一種簡單的方法_MySQL############SqlServer匯入資料到MySql#######

以上是Excel檔案匯入資料到MySQL資料庫的方法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn