最近在做Excel檔案匯入資料到資料庫。網站如果想支援批次插入數據,可以製作上傳Excel文件,匯入裡面的資料內容到MySQL資料庫的小程式。本文主要和大家分享Excel檔案匯入資料到MySQL資料庫的方法實例,希望能幫助大家。
要用到的工具:
ThinkPHP:輕量級國產PHP開發架構。可於ThinkPHP官網下載。
PHPExcel:Office Excel 文件的一個PHP類別庫,它是基於微軟的OpenXML標準和PHP語言。可在CodePlex官網下載。 、
1.設計MySQL資料庫product
建立product資料庫
建立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 ); 登入後複製 |
先在ThinkPHP同級目錄下新建index.php文件,產生專案Home. |
<?php define('APP_NAME','Home'); //项目名称 define('APP_PATH','./Home/'); //项目路径 define('APP_DEBUG', true); //开启DEBUG require './ThinkPHP/ThinkPHP.php'; //引入ThinkPHP核心运行文件 ?>
#3.上傳檔案表單
<!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>
<?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"添加失败!"; } } } ?>
以上是Excel檔案匯入資料到MySQL資料庫的方法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!