前言:要做这个excel导出和导入的,首先需要一个第三方库,导入到你的项目中来,才能实现,哪个第三方库呢,百度搜一下PHPEXCEL。我是用的thinkphp3.2写的。
开始正题:先做导入(因为导入相对来说比较复杂,后面都会有代码,并且代码都有详细的注释)。
导入:
下载好phpexcel然后解压,然后将PHPExcel文件夹和PHPExcel.php放到vender目录(tp的第三方库存放的地方),然后就是显示页面,我的目的是做功能,所以页面就无所谓了,这里是页面的代码:
<html>
<head></head>
<body>
<form name="aa" enctype="multipart/form-data" action="{:U('Home/Index/upload')}" method="post">
<input type="file" name="file">
<input type='submit'>
</form>
</body>
</html>
控制器代码:
//学习phpexcel
//页面显示
public function excelIn(){
$this->display();
}
//上传
public function upload(){
//dump($_FILES);
$tmp_file = $_FILES['file']['tmp_name'];//临时目录
//判断错误啊,判断格式我就不在这里写这么详细了,其实还是要处理一下的,
//获取拓展名.xls
$file_extend = explode ( ".", $_FILES ['file'] ['name'] );
$file_extend = $file_extend[1];//获取拓展名.xls
//设置上传路径将文件传至指定的地方,文件名用时间戳代替
$savePath = './public/upload/'.time().".".$file_extend;
$ok = move_uploaded_file($tmp_file,$savePath); //将文件从临时目录移动到指定的目录
if($ok){
//成功上传并移入,就开始处理excel文件,将excel变成一个数组
$result = dealExcelInDb($savePath,'utf-8');
dump($result);exit;
}else{
//上传失败,你们该怎么处理怎么处理,我不管。。。。。。
echo 22222;
}
}
公共方法function里面的代码:
//处理excel进入数据库的方法
function dealExcelInDb($filename,$encode='utf-8'){
require dirname(__FILE__).'/../../../'.'/ThinkPHP/Library/Vendor/PHPExcel/PHPExcel/IOFactory.php';
$reader = \PHPExcel_IOFactory::createReader('Excel2007'); // 读取 excel 文档
$PHPExcel = $reader->load($filename); // 文档名称
$objWorksheet = $PHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow(); // 取得总行数
$highestColumn = $objWorksheet->getHighestColumn(); // 取得总列数
$arr = array(1 => 'A', 2 => 'B', 3 => 'C', 4 => 'D', 5 => 'E', 6 => 'F', 7 => 'G', 8 => 'H', 9 => 'I', 10 => 'J', 11 => 'K', 12 => 'L', 13 => 'M', 14 => 'N', 15 => 'O', 16 => 'P', 17 => 'Q', 18 => 'R', 19 => 'S', 20 => 'T', 21 => 'U', 22 => 'V', 23 => 'W', 24 => 'X', 25 => 'Y', 26 => 'Z');
//echo $highestRow.$highestColumn;
// 一次读取一列
$res = array();
for ($row = 1; $row <= $highestRow; $row++) {
for ($column = 0; $arr[$column] != 'T'; $column++) {
$val = $objWorksheet->getCellByColumnAndRow($column, $row)->getValue();
$res[$row-1][$column] = $val;
}
}
return $res;
}
代码已经写好了,现在开始讲思路,然后各位看官对照代码看一下,
第一步:首先你得写一个页面能够上传excel文件对吧,然后打印一下这个excel文件,看下$_FILES是个啥?,这是第一步你需要完成的,比较简单。
第二步:这个时候就需要引入PHPExcel然后用PHPExcel里面的东西来处理一下这个上传的excel文件(文件变成数组的过程)。
第三步:读取ecxel文件里面的内容,然后将其写入数据库,这个时候就算是大功告成了。
结果截图:
导出excel就很简单了,后面有时间再来补充吧,今天就先到这里吧。