最近在做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;
创建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
);
2.生成项目
先在thinkphp同级目录下新建index.php文件,生成项目home.
<?php
define('app_name','home'); //项目名称
define('app_path','./home/'); //项目路径
define('app_debug', true); //开启debug
require './thinkphp/thinkphp.php'; //引入thinkphp核心运行文件
?>
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>
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"添加失败!";
}
}
}
?>
5.测试
相关推荐:
分享csv导入数据到mysql实例
导入数据到mysql的一种简单的方法_mysql
sqlserver导入数据到mysql
以上就是excel文件导入数据到mysql数据库的方法实例的详细内容。