thinkPHP实现将excel导入到数据库中的方法体如下:
成都创新互联公司是一家专业提供沙湾企业网站建设,专注与网站设计制作、成都网站建设、H5场景定制、小程序制作等业务。10年已为沙湾众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
PHPExcel插件可点击此处本站下载。
这里使用的是thinkphp框架的3.1版本,下载好压缩包,框架中的extend中的vendor文件夹中新建一个名为PHPExcel的文件夹,把classes里面的内容放到里面
下面是前端页面
提示:我在测试的时候遇到报错exception 'PHPExcel_Reader_Exception' with message 'The filename
原因是由于excel的文件后缀可能不同,我的文件后缀是xlsx,然后给把他另存为了xls的文件,就可以了
html
head
/head
body
form action="{pigcms::U('Jdb/abcdefgwulisuibian')}" method="post" enctype="multipart/form-data"
input type="file" name="import"/
input type="hidden" name="table" value="tablename"/
input type="submit" value="导入"/
/form
/body
/html
下面是php的
function abcdefgwulisuibianuplod(){
$this-display();//显示页面
}
function abcdefgwulisuibian(){
if (!empty($_FILES)) {
import("@.ORG.UploadFile");
$config=array(
'allowExts'=array('xlsx','xls'),
'savePath'='./Public/upload/',
'saveRule'='time',
);
$upload = new UploadFile($config);
if (!$upload-upload()) {
$this-error($upload-getErrorMsg());
} else {
$info = $upload-getUploadFileInfo();
}
vendor("PHPExcel.PHPExcel");
$file_name=$info[0]['savepath'].$info[0]['savename'];
$objReader = PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel = $objReader-load($file_name,$encode='utf-8');
$sheet = $objPHPExcel-getSheet(0);
$highestRow = $sheet-getHighestRow(); // 取得总行数
$highestColumn = $sheet-getHighestColumn(); // 取得总列数
for($i=2;$i=$highestRow;$i++)//这个地方根据需要,一般第一行是名称,所以从第二行开始循环,也可以从第一行开始
{
$data['lianjieid'] = $objPHPExcel-getActiveSheet()-getCell("A".$i)-getValue();//数据库字段和excel列相对应
$data['yaoqingma'] = $objPHPExcel-getActiveSheet()-getCell("B".$i)-getValue();
$data['dlmima']= $objPHPExcel-getActiveSheet()-getCell("C".$i)-getValue();
$data['ljdizhi']= $objPHPExcel-getActiveSheet()-getCell("D".$i)-getValue();
M('jdb')-add($data);//插入数据库
}
$this-success('导入成功!');
}else
{
$this-error("请选择上传的文件");
}
}
把excel
改为
cvs文件
?
//连接数据库文件
$connect=mysql_connect("localhost","admin","admin")
or
die("链接数据库失败!");
//连接数据库(test)
mysql_select_db("testcg",$connect)
or
die
(mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for
($i=0;$i
count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通过循环得到EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert
into
ceshi
(name,num,dom)
values('$string[0]','$string[1]','$string[2]');";
mysql_query($q)
or
die
(mysql_error());
if
(!mysql_error());
{
echo
"
成功导入数据!";
}
echo
$string[4]."\n";
unset($string);
}
?
需要PHP基础知识和数据库基础知识。
以SQL为例。使用PHP MySQL 函数可以编辑数据库。
mysql_connect() 函数打开MySQL 连接。举例
?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}// 一些代码...mysql_close($con);
?
mysql_connect()三个参数分别是服务器名,连接账号,连接密码。
连接之后,可以使用mysql_select_db()设置要处理的数据库,后面则是用数据库语句处理数据。SQL语法简介网页链接
首先你要建立一个表,例如是注册的用户表user
,里面的结构有字段
id,
name,nickname,email等。
然后在你的表单处form
action="a.php"
method="post"
name="regform"(如果有图片上传,还要加上enctype="multipart/form-data")
,那么点击表单提交按纽后,此表单将会交给处理页a.php来作处理。
如果简单点,你就直接可以将表单传递过来的数据$_POST,直接用sql插入语句,insert
into来插入到数据库,表user中。例如insert
into
user
set
name='".$_POST['name']."'.............................
这个技术稍微综合了PHP的基础知识,
给你一个思路,
(1) 先将textarea 文本中的信息 传入 php的 $_POST['content'], content 是textarea的属性名称,
(2) 传过来的值是通过数组的形式进行保存的 ,其中PHP有一个函数是可以将数组转换成字符串形式,
引用那个函数后,通过var_dump()打印出你的转换数据,看是否是字符串
在这里需要提醒你一下,因为你是每一行作为一句话 通过逗号分隔出来的 ,那么 在转换成数组的时候,
将每一行数据 用 | 隔开,例如:
数据1 , 数据11, 数据111 | 数据2, 数据22, 数据222| 数据3 , 数据33, 数据333 | 数据4, 数据44, 数据444 |
这就是一个转换成字符串的格式了,
(3) 通过转换成字符串后,php中还有一个函数就是将字符串转换成 数组的函数,转换结果应该出来的数据格式是:
array=
array(0)=array{
'数据1,数据11,数据111'
},
array(1)=array{
'数据2,数据22,数据222'
}....
(4)以上的数据都是索引数组的二维数组,将二维数组用foreach()去循环打印出来,那么久可以得到每一个 所以数组下的 数据了,这些数据
就是你要保存到数据的数据,在按照(1)和(2)的方式进行操作,最后就可以把textarea的数据保存到数据库中咯。
思路就是这样的 ,希望你能自己动手,把这个程序解决,这个程序在实际开发中运用的很广泛,最好自己把它掌握了.....
看你的表格,只需要从表单中循环取出所有行,然后依次写入数据库就行了
假设表单中是:txt1[] txt2[]......
通过$a=$_POST["txt1[]"]取得值,然后循环写入:
for($t=0;$t=count($a)-1;$t++){
// insert into 表 (字段1,......) values ('$a[$t]',.....)
}
至于打印,在JS中直接windows.print就行了