Maison  >  Article  >  développement back-end  >  PHP télécharge des fichiers Excel pour importer des données dans la base de données MySQL

PHP télécharge des fichiers Excel pour importer des données dans la base de données MySQL

墨辰丷
墨辰丷original
2018-05-31 10:33:021577parcourir

Cet article présente principalement l'exemple de téléchargement de fichiers Excel vers la base de données MySQL avec PHP. Vous pouvez écrire des données Excel dans la base de données MySQL. Les étudiants intéressés peuvent en apprendre davantage.

J'importe actuellement des données de fichiers Excel dans la base de données. Si le site Web souhaite prendre en charge l'insertion de données par lots, il peut créer un petit programme qui télécharge des fichiers Excel et importe le contenu des données dans la base de données MySQL.

Outils à utiliser :

ThinkPHP : framework de développement PHP domestique léger. Il peut être téléchargé sur le site officiel de ThinkPHP.

PHPExcel : une bibliothèque de classes PHP pour les documents Office Excel, basée sur le standard OpenXML et le langage PHP de Microsoft. Il peut être téléchargé sur le site officiel de CodePlex. ,

1. Concevoir un produit de base de données MySQL

Créer une base de données de produits

CREATE DATABASE product DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

Créer une table pro_info, structure de table

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

2. Générer un projet

Créez d'abord un nouveau fichier index.php dans le même répertoire que ThinkPHP pour générer l'accueil du projet.

<?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.

Créez un nouveau dossier Index sous le dossier Home/Tpl et créez-y un nouveau fichier index.html

<!DOCTYPE html>
 
<html>
  <head>
    <title>上传文件</title>
    <meta charset="UTF-8">
  </head>
  <body>
    <form id="upload" action="__URL__/upload/" method="post" enctype="multipart/form-data">
      <label for="file">上传文件:</label>
      <input type="file" name="file" id="file"><br />
      <input type="submit" name="submit" value="上传" />
    </form>
  </body>
</html>

4. Dans /Home Écrivez des méthodes pour afficher la page du formulaire de téléchargement, télécharger des fichiers Excel et importer des fichiers Excel dans /Lib/Action/IndexAction.class.php (s'il n'y a pas de package d'extension sous ThinkPHP/Extend, vous devez téléchargez-le depuis le site officiel de ThinkPHP, puis décompressez le package d'extension et insérez-le)

<?php
 
/**
*
* 导入Excel文件数据到MySQL数据库
*/
class IndexAction extends Action {
 
  /**
   * 显示上传表单html页面
   */
  public function index() {
    $this->display();
  }
 
  /**
   * 上传Excel文件
   */
  public function 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文件
   */
  public function 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 "添加失败!";
    }
  }
 
}
?>

Test

Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il vous sera utile. L'apprentissage de chacun aide.


Recommandations associées :

Comment définir la taille du fichier à l'aide de la fonction readfile() en php

Analyse de la différence entre new self() et new static() en PHP

php readfile() cas de modification de la taille de téléchargement du fichier

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn