1 public function upload()
2 {
3 //设置响应头
4 header("Contec-Type=text.html;charset=utf-8"
);
5 //实例化上传类
6 $upload=
new \Think\Upload();
7 //设置上传附件大小
8 $
$upload->maxSizae=20480000
;
9 //设置上传附件类型
10 $upload->exts=
array('xls',
xlsx);
11 //设置文件上传目录
12 $upload->savPath="/"
;
13 //上传文件
14 $info=
$upload->uploadOne(
$_FILES['file'
]);
15 $filename='/.Upload'.
$info['savepath'].
$info['savename'
];
16 $exts=
$info['ext'
];
17 if(!
$info)
18 {
19 //提示上传错误
20 $this->error(
$upload->
getError);
21
22 }
23 else{
24 //上传成功,开始导入
25 $this->dataImport(
$finame,
$exts);
26
27 }
28 }
29
30 //这是导入函数
31 puhblic
function dataImport(
$filename,
$exts)
32 {
33
34 //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
35 import("Org.Util.PHPExcel"
);
36 //创建PHPExcel对象,注意,不能少了\
37 $PHPExcel=
new \PHPExcel();
38 //如果excel文件后缀名为.xls,导入这个类
39 if(
$exts == 'xls'
){
40 import("Org.Util.PHPExcel.Reader.Excel5"
);
41 $PHPReader=
new \PHPExcel_Reader_Excel5();
42 }
else if(
$exts == 'xlsx'
){
43 import("Org.Util.PHPExcel.Reader.Excel2007"
);
44 $PHPReader=
new \PHPExcel_Reader_Excel2007();
45
46 //载入文件
47 $PHPExcel=
$PHPReader->load(
$filename);
48 //获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
49 $currentSheet=
$PHPExcel->getSheet(0
);
50 //获取总列数
51 $allColumn=
$currentSheet->
getHighestColumn();
52 //获取总行数
53 $allRow=
$currentSheet->
getHighestRow();
54 //循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
55
56 for(
$currentRow=3;
$currentRow<=
$allRow;
$currentRow++
){
57 //从哪列开始,A表示第一列
58
59 for(
$currentColumn='A';
$currentColumn<=
$allColumn;
$currentColumn++
){
60 //数据坐标
61 $address=
$currentColumn.
$currentRow;
62 //读取到的数据,保存到数组$arr中
63 $data[
$currentRow][
$currentColumn]=
$currentSheet->getCell(
$address)->
getValue();
64
65 }
66 }
67 $this->save_import(
$data);
68
69 }
70
71 //导入导数据库中
72 public function save_import(
$data)
73 {
74 //假设是某个数据库
75 $database=D('upload'
);
76 //用循环
77 foreach(
$data as $k=>
$v)
78 {
79 //封装数据
80 $info['name']=
$v['B'
];
81 $info['age']=
$v['C'
];
82 $info['tel']=
$v['E'
];
83 $info['addr']=
$v['F'
];
84 $info['career']=
$v['G'
];
85 if(
$v['B']!=""&&
$v['C']!=""&&
$v['E']!=""&&
$v['F']!=""&&
$v['G']!=""
)
86 {
87 $result=
$d->where(
array('tel'=>
$v['E']))->
find();
88
89 if(
$result){
90 $res=
$d->where(
array('tel'=>
$v['E']))->save(
$info);
91 }
else{
92 $res=
$d->add(
$info);
93 }
94
95
96 }
97
98
99
100 }
转载于:https://www.cnblogs.com/zjl10101314/p/9464043.html
相关资源:ThinkPHP5.1 excel表的导入导出操作 (PHPExcel)