PHP importer un fichier Excel dans la base de données MySQL

墨辰丷
Libérer: 2023-03-28 16:30:02
original
2822 Les gens l'ont consulté

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 de Microsoft et le langage PHP. 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;
Copier après la connexion

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
);
Copier après la connexion

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核心运行文件
?>
Copier après la connexion

3.

Créez un nouveau dossier Index sous le dossier Home/Tpl et créez un nouveau fichier index.html à l'intérieur de

<!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>
Copier après la connexion

4. Dans /Home Écrivez des méthodes pour afficher la page du formulaire de téléchargement, téléchargez des fichiers Excel et importez 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écharger 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 "添加失败!";
    }
  }
 
}
?>
Copier après la connexion

Test

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun. En même temps, j'espère également que tout le monde soutiendra le site Web PHP chinois.

Recommandations associées :

phpComment exporter des données

phpExemple d'algorithme gagnant simple

Algorithme de backtracking PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal