Heim  >  Artikel  >  Backend-Entwicklung  >  Beispiel für den Import von Daten aus Excel-Dateien in die MySQL-Datenbank

Beispiel für den Import von Daten aus Excel-Dateien in die MySQL-Datenbank

小云云
小云云Original
2018-03-09 14:04:382882Durchsuche

Ich importiere derzeit Daten aus Excel-Dateien in die Datenbank. Wenn die Website das Batch-Einfügen von Daten unterstützen möchte, kann sie ein kleines Programm erstellen, das Excel-Dateien hochlädt und den Dateninhalt in die MySQL-Datenbank importiert. In diesem Artikel erfahren Sie hauptsächlich, wie Sie Daten aus Excel-Dateien in eine MySQL-Datenbank importieren. Ich hoffe, er kann Ihnen helfen.

Zu verwendende Tools:

ThinkPHP: leichtes inländisches PHP-Entwicklungsframework. Es kann von der offiziellen ThinkPHP-Website heruntergeladen werden.

PHPExcel: Eine PHP-Klassenbibliothek für Office Excel-Dokumente, die auf dem OpenXML-Standard und der PHP-Sprache von Microsoft basiert. Es kann von der offiziellen CodePlex-Website heruntergeladen werden. ,

1. MySQL-Datenbankprodukt entwerfen

Produktdatenbank erstellen


CREATE DATABASE product DEFAULTCHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE TABLE pro_info(
pId int(4)NOT NULL PRIMARY KEY AUTO_INCREMENT,
pName varchar(20)NOT NULL,
pPrice floatNOT NULL,
pCount floatNOT NULL
);

Pro_info-Tabelle erstellen, Tabellenstruktur


<?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核心运行文件
?>
<!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>

2. Projekt generieren

Erstellen Sie zunächst eine neue index.php-Datei im selben Verzeichnis wie ThinkPHP und generieren Sie das Projekt Home.


<?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"添加失败!";
    }
  }
  
}
?>

3. Datei hochladen

Erstellen Sie einen neuen Indexordner unter dem Home/Tpl-Ordner und erstellen Sie einen neuen Index .html-Datei darin


4. Schreiben Sie die Seite mit dem Anzeige-Upload-Formular und laden Sie sie in /Home/Lib/ hoch. Action/IndexAction.class.php Excel-Datei, Methode zum Importieren einer Excel-Datei (wenn unter ThinkPHP/Extend kein Erweiterungspaket vorhanden ist, müssen Sie es von der offiziellen ThinkPHP-Website herunterladen und dann das Erweiterungspaket entpacken und einfügen)


5. Test

Verwandte Empfehlungen:

CSV-Importdaten für MySQL-Instanz freigeben

Eine einfache Möglichkeit, Daten in MySQL_MySQL zu importieren

SqlServer importiert Daten in MySql

Das obige ist der detaillierte Inhalt vonBeispiel für den Import von Daten aus Excel-Dateien in die MySQL-Datenbank. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn