本篇内容介绍了“tp怎么实现excel的导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一:下载phpExcel第三方类库
下载地址:http://www.thinkphp.cn/topic/14005.html下载官方网站;
二:下载成功之后将文件放到Vendor下:ThinkPHP\Extend\Vendor\PHPExcel\PHPExcel.php。
三:配置数据库的信息操作(我的是在home文件夹下(application/home/config/config.php)添加如下配置):
<?php
return array(
//'配置项'=>'配置值'
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'db_oa', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'tg_', // 数据库表前缀
// 'DB_FIELDS_CACHE' => false, // 启用字段缓存(开发时这个要写成false)
)
?>
四:模板代码:
<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>
<?php
?>
实现功能的控制器方法:
1>导出数据方法的实现:
function expUser(){//导出Excel
//获取表头名:
$xlsName = "evaluate_check";
//获取文件里面具体的数据
$xlsCell = array('教师检查作业表', '所属功能','所属权限','所属学生','学生答案'
);
// 连接数据库找到查询的表
$xlsModel = M('evaluate_check');
// 通过调用select方法field查找数据表里面的字段
$xlsData = $xlsModel->Field('id,tep_id,tet_id,student_id,student_anwser')->select();
$this->exportExcel($xlsName,$xlsCell,$xlsData);
}
public function exportExcel($expTitle,$expCellName,$expTableData){
// 抓取文件名将字符编码转换成utf8格式
$xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称
// 命名Excel文件的文件名称,通过时间函数随即打乱
$fileName = $_SESSION['account'].date('_YmdHis');//or $xlsTitle 文件名称可根据自己情况设定
//通过count函数获取到字段的行数
$cellNum = count($expCellName);
//获取具体的值
$dataNum = count($expTableData);
// var_dump(count($expTableData));exit;
//引入具体的类库
vendor("PHPExcel.PHPExcel");
// echo '111111dfgfhj';exit;
//实例化方法,得到所有的方法;
$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');
// var_dump($cellName);exit;
// var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit;
$objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格
// echo '1111111';exit;
// var_dump($objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1'));exit;
// $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]);
}
$objPHPExcel->getActiveSheet()->setTitle($expTitle);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1',$expTitle);
// Miscellaneous glyphs, UTF-8
// var_dump($dataNum);exit;
//对获取的列好进行遍历赋值输出
for($i=0;$i<$dataNum;$i++){
for($j=0;$j<$cellNum;$j++){
$a = array_values($expTableData[$i]) ;
$objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3),$a[$j]);
}
}
ob_end_clean();//清楚缓冲避免乱码
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本窗口打印
//通过调用如下方法来创建Excel将值写入
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//进行保存下载
$objWriter->save('php://output');
exit;
}
3>导入数据方法的实现:
(1)选取你要导入的xls文件,进行操作
(2)代码如下:
function impUser(){
//判断你的文件是否为空
if (!empty($_FILES)) {
// 引入类库
vendor("PHPExcel.PHPExcel");
//获取存储文件的文件名
$file_name=$_FILES['import']['tmp_name'];
//调用如下方法来读取你表里面的信息
$objReader = \PHPExcel_IOFactory::createReader('Excel5');
// var_dump($objReader);exit;
//读取到的临时文件名的信息
$objPHPExcel = $objReader->load($file_name,$encode='utf-8');
//获取Excel表格的列数
$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("请选择上传的文件");
}
}
说明:最后的数据库信息以你具体的表信息为主,在M(‘表明’)->add($data);
$data里面的数据也以你真实的表为基础
“tp怎么实现excel的导入和导出”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/3643035/blog/1527916