本文目录一览:
thinkphp怎么把excel导入数据库
thinkPHP实现将excel导入到数据库中的方法体如下:
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("请选择上传的文件");
}
}
thinkPHP怎样使用PHPExcel导出网站数据为excel
第一步:先去下载PHPExcel插件压缩包,解压后只用到Classes文件夹里面的文件就行。
第二步:然后把Classes文件夹名称改为PHPExcel (也可以不用改),再放在thinkPHP指定的第三方类库目录文件夹Vendor下面,第三方类库目录在ThinkPHP/Library 里面
第三步:整理数据,整理成适合excel表格式的数据,不多说直接给代码
public function export(){//导出Excel表数据整理
$xlsData = M('table')-select();//查找需要导出的数据
$xlsCell = array(//设置excel文档的格式第一行就相当于标题
array('id','ID号'),
array('title','标题'),
array('time','时间'),
array('content','内容')
);
$newArray = array();//自定义数组
foreach ($xlsData as $k = $v)
{//然后把所有查找到的数据根据设置第一行的标题相对应放进数组里面
$newArray[$k]['id'] = $v['id'];
$newArray[$k]['title'] = $v['title'];
$newArray[$k]['time'] = date('Y-m-d',$v['time']);
$newArray[$k]['content'] = $v['content'];
}
$xlsName = 'Excel表数据';//设置Excel表文件名称
$this-exportExcel($xlsName,$xlsCell,$newArray);//调用PHPExcel插件,这步的函数也需要自定义
}
/**
* @param $xlsName 名称
* @param $xlsCell 参数(标题数组)
* @param $newArray 内容(数据数组)
*/
public function exportExcel($xlsName,$xlsCell,$newArray){
$xlsTitle = iconv('utf-8', 'gb2312', $xlsName);//文件名称需要转码避免乱码出错
$xlsCell_num = count($xlsCell);
$newArray_num = count($newArray);
vendor("PHPExcel.PHPExcel");//关键,利用thinkphp内置函数嵌套PHPExcel插件,如果在第二步没有改文件夹名称就这样:vendor("Classes.PHPExcel");点之前表示插件文件夹,点之后的表示PHPExcel.php文件的名称不要后缀名-phpexcel插件下载
$objPHPExcel = new \PHPExcel();//实例化PHPExcel
$column_key = 'A';//excel表的每个单元格都是A1,A2,A3....类似的,大写字母代表列,数字代表行,那么第一行就是标题了
foreach($xlsCell as $k=$v){
$objPHPExcel-setActiveSheetIndex(0)-setCellValue($column.'1',$v);//有多少标题列先写进第一行
$column_key++;//这样循环的好处就是不用限定有多少列,可以根据你的数据表字段有多少就导出多少列
}
for($i=0;$i$newArray_num;$i++){//第一层循环表示多少行
$column_key = 'A';
for($j=0;$j$xlsCell_num;$j++){//第二层表示列
$objPHPExcel-getActiveSheet(0)-setCellValue($column_key.($i+2), $newArray[$i][$xlsCell[$j][0]]);//($i+2)表示从第二行开始,第一行已经设置为标题了-phpexcel插件下载
$column_key++;
}
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$xlsTitle.xls");//attachment新窗口打印inline本窗口打印-phpexcel插件下载
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');//Excel5为xls格式,excel2007为xlsx格式-phpexcel插件下载
$objWriter-save('php://output');
exit;
}
运行后的效果文件图
thinkphp5.0 如何导入phpexcel插件,能详细些点吗
下载phpexcel,将整个文件夹放到vendor文件夹里面,如下图
在控制器中的使用方法
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new \PHPExcel();
$file_name = date('YmdHis').'.xls';
header("Content-Disposition:attachment; filename=".$file_name);
$objActSheet = $objPHPExcel-getActiveSheet()-setTitle('成绩单');
$objActSheet-SetCellValue('A1', 'ID');
$objActSheet-SetCellValue('B1', '名称');
$objActSheet-SetCellValue('C1', '分数');
$list = "";//数据列表
if($list){
foreach ($list as $k = $v){
$i = $k + 2;
$objActSheet-SetCellValue('A'.$i,''. $v['id']);
$objActSheet-SetCellValue('B'.$i,''. $v['name']);
$objActSheet-SetCellValue('C'.$i,''. $v['score']);
}
$objWriter = new \PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter-save('php://output');//输出到浏览器
exit;
}