详解thinkphp实现excel数据的导入导出(附完整案例)
发布时间 - 2026-01-10 22:11:56 点击率:次实现步骤:

一:在http://phpexcel.codeplex.com/下载最新PHPExcel放到Vendor下,注意位置:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
二:导出excel代码实现
/**方法**/
function index(){
$this->display();
}
public function exportExcel($expTitle,$expCellName,$expTableData){
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
$fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
$cellNum = count($expCellName);
$dataNum = count($expTableData);
vendor("PHPExcel.PHPExcel");
$objPHPExcel = new PHPExcel();
$cellName = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ');
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
// $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.' Export time:'.date('Y-m-d H:i:s'));
for($i=0;$i<$cellNum;$i++){
$objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
}
// Miscellaneous glyphs, UTF-8
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);
}
}
header('pragma:public');
header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
/**
*
* 导出Excel
*/
function expUser(){//导出Excel
$xlsName = "User";
$xlsCell = array(
array('id','账号序列'),
array('truename','名字'),
array('sex','性别'),
array('res_id','院系'),
array('sp_id','专业'),
array('class','班级'),
array('year','毕业时间'),
array('city','所在地'),
array('company','单位'),
array('zhicheng','职称'),
array('zhiwu','职务'),
array('jibie','级别'),
array('tel','电话'),
array('qq','qq'),
array('email','邮箱'),
array('honor','荣誉'),
array('remark','备注')
);
$xlsModel = M('Member');
$xlsData = $xlsModel->Field('id,truename,sex,res_id,sp_id,class,year,city,company,zhicheng,zhiwu,jibie,tel,qq,email,honor,remark')->select();
foreach ($xlsData as $k => $v)
{
$xlsData[$k]['sex']=$v['sex']==1?'男':'女';
}
$this->exportExcel($xlsName,$xlsCell,$xlsData);
}
第三:导入excel数据代码
function impUser(){
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=3;$i<=$highestRow;$i++)
{
$data['account']= $data['truename'] = $objPHPExcel->getActiveSheet()->getCell("B".$i)->getValue();
$sex = $objPHPExcel->getActiveSheet()->getCell("C".$i)->getValue();
// $data['res_id'] = $objPHPExcel->getActiveSheet()->getCell("D".$i)->getValue();
$data['class'] = $objPHPExcel->getActiveSheet()->getCell("E".$i)->getValue();
$data['year'] = $objPHPExcel->getActiveSheet()->getCell("F".$i)->getValue();
$data['city']= $objPHPExcel->getActiveSheet()->getCell("G".$i)->getValue();
$data['company']= $objPHPExcel->getActiveSheet()->getCell("H".$i)->getValue();
$data['zhicheng']= $objPHPExcel->getActiveSheet()->getCell("I".$i)->getValue();
$data['zhiwu']= $objPHPExcel->getActiveSheet()->getCell("J".$i)->getValue();
$data['jibie']= $objPHPExcel->getActiveSheet()->getCell("K".$i)->getValue();
$data['honor']= $objPHPExcel->getActiveSheet()->getCell("L".$i)->getValue();
$data['tel']= $objPHPExcel->getActiveSheet()->getCell("M".$i)->getValue();
$data['qq']= $objPHPExcel->getActiveSheet()->getCell("N".$i)->getValue();
$data['email']= $objPHPExcel->getActiveSheet()->getCell("O".$i)->getValue();
$data['remark']= $objPHPExcel->getActiveSheet()->getCell("P".$i)->getValue();
$data['sex']=$sex=='男'?1:0;
$data['res_id'] =1;
$data['last_login_time']=0;
$data['create_time']=$data['last_login_ip']=$_SERVER['REMOTE_ADDR'];
$data['login_count']=0;
$data['join']=0;
$data['avatar']='';
$data['password']=md5('123456');
M('Member')->add($data);
}
$this->success('导入成功!');
}else
{
$this->error("请选择上传的文件");
}
}
四、模板代码
<html>
<head>
</head>
<body>
<P><a href="{:U('Index/expUser')}" >导出数据并生成excel</a></P><br/>
<form action="{:U('Index/impUser')}" 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>
最后下载:demo下载
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# thinkphp
# excel导入
# thinkphp使用phpexcel
# 导出excel
# thinkPHP5框架导出Excel文件简单操作示例
# ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
# ThinkPHP基于PHPExcel导入Excel文件的方法
# ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
# thinkPHP实现将excel导入到数据库中的方法
# Dwz与thinkphp整合下的数据导出到Excel实例
# thinkphp3.2中实现phpexcel导出带生成图片示例
# 基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据
# thinkPHP导出csv文件及用表格输出excel的方法
# ThinkPHP 框架实现的读取excel导入数据库操作示例
# thinkphp5.1 框架导入/导出excel文件操作示例
# 请选择
# 大家多多
# 院系
# 单元格
# 行数
# 上传
# 可根据
# mergeCells
# time
# AZ
# getActiveSheet
# setCellValue
# setActiveSheetIndex
# Export
# AO
# AP
# AQ
# AJ
# AK
# AL
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
什么是javascript作用域_全局和局部作用域有什么区别?
Android使用GridView实现日历的简单功能
公司门户网站制作流程,华为官网怎么做?
Java遍历集合的三种方式
如何撰写建站申请书?关键要点有哪些?
动图在线制作网站有哪些,滑动动图图集怎么做?
大连 网站制作,大连天途有线官网?
EditPlus中的正则表达式 实战(1)
如何用5美元大硬盘VPS安全高效搭建个人网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Laravel如何实现API速率限制?(Rate Limiting教程)
如何在IIS中新建站点并解决端口绑定冲突?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
WEB开发之注册页面验证码倒计时代码的实现
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
如何破解联通资金短缺导致的基站建设难题?
微信h5制作网站有哪些,免费微信H5页面制作工具?
Laravel如何创建和注册中间件_Laravel中间件编写与应用流程
如何在阿里云香港服务器快速搭建网站?
简历没回改:利用AI润色让你的文字更专业
北京网站制作公司哪家好一点,北京租房网站有哪些?
原生JS获取元素集合的子元素宽度实例
如何快速查询网址的建站时间与历史轨迹?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
简历在线制作网站免费版,如何创建个人简历?
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel如何记录自定义日志?(Log频道配置)
Windows Hello人脸识别突然无法使用
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
Laravel如何实现多对多模型关联?(Eloquent教程)
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
javascript日期怎么处理_如何格式化输出
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
如何在万网利用已有域名快速建站?
如何快速生成可下载的建站源码工具?
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】
如何在服务器上三步完成建站并提升流量?
Python数据仓库与ETL构建实战_Airflow调度流程详解
如何选择可靠的免备案建站服务器?
在线制作视频网站免费,都有哪些好的动漫网站?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
Laravel Blade模板引擎语法_Laravel Blade布局继承用法
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel如何生成URL和重定向?(路由助手函数)

