最近在做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; Salin selepas log masuk |
创建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 ); Salin selepas log masuk |
2.生成项目
先在ThinkPHP同级目录下新建index.php文件,生成项目Home.
<?php define('APP_NAME','Home'); //项目名称 define('APP_PATH','./Home/'); //项目路径 define('APP_DEBUG', true); //开启DEBUG require './ThinkPHP/ThinkPHP.php'; //引入ThinkPHP核心运行文件 ?> Salin selepas log masuk |
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> Salin selepas log masuk |
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('ORG.Net.UploadFile'); //实例化上传类 $upload= new UploadFile(); //设置附件上传文件大小200Kib $upload->mixSize = 2000000; //设置附件上传类型 $upload->allowExts =array('xls','xlsx', 'csv'); //设置附件上传目录在/Home/temp下 $upload->savePath ='./Home/temp/'; //保持上传文件名不变 $upload->saveRule =''; //存在同名文件是否是覆盖 $upload->uploadReplace = true; if(!$upload->upload()) { //如果上传失败,提示错误信息 $this->error($upload->getErrorMsg()); }else { //上传成功 //获取上传文件信息 $info= $upload->getUploadFileInfo(); //获取上传保存文件名 $fileName= $info[0]['savename']; //重定向,把$fileName文件名传给importExcel()方法 $this->redirect('Index/importExcel',array('fileName'=> $fileName), 1,'上传成功!'); } } /** * * 导入Excel文件 */ publicfunction importExcel() { header("content-type:text/html;charset=utf-8"); //引入PHPExcel类 vendor('PHPExcel'); vendor('PHPExcel.IOFactory'); vendor('PHPExcel.Reader.Excel5'); //redirect传来的文件名 $fileName= $_GET['fileName']; //文件路径 $filePath= './Home/temp/' . $fileName . '.xlsx'; //实例化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'no Excel'; 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('Info'); $num= $m->add(array('pName'=> $name,'pPrice' => $price, 'pCount'=> $count)); } if($num > 0) { echo"添加成功!"; }else { echo"添加失败!"; } } } ?> Salin selepas log masuk |
5.测试
相关推荐:
Atas ialah kandungan terperinci Excel文件导入数据到MySQL数据库的方法实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!