數據導出已經有了,怎麼能沒有數據導入呢,一樣使用TP5框架,首先須要下載phpexcel.zip,放到第三方類庫目錄vendor目錄下,而後有一個頁面能夠讓你選擇要導入的Excel文件,而後點擊導入按鈕調用接口:php
個人模板內的數據以下圖:數據庫
後端接口代碼以下:json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
public
function
uplExcel(Request
$request
)
{
if
(!
empty
(
$_FILES
[
'excel'
][
'name'
])) {
$fileName
=
$_FILES
[
'excel'
][
'name'
];
//獲得文件全名
$dotArray
=
explode
(
'.'
,
$fileName
);
//把文件名安.區分,拆分紅數組
$type
=
end
(
$dotArray
);<br>
if
(
$type
!=
"xls"
&&
$type
!=
"xlsx"
) {
$ret
[
'res'
] =
"0"
;
$ret
[
'msg'
] =
"不是Excel文件,請從新上傳!"
;
return
json_encode(
$ret
);
}
//取數組最後一個元素,獲得文件類型
$uploaddir
=
"../uploads2/"
.
date
(
"Y-m-d"
) .
'/'
;
//設置文件保存目錄 注意包含
if
(!
file_exists
(
$uploaddir
)) {
mkdir
(
$uploaddir
, 0777, true);
}
$path
=
$uploaddir
. md5(uniqid(rand())) .
'.'
.
$type
;
//產生隨機文件名
//$path = "images/".$fileName; //客戶端上傳的文件名;
//下面必須是tmp_name 由於是從臨時文件夾中移動
move_uploaded_file(
$_FILES
[
'excel'
][
'tmp_name'
],
$path
);
//從服務器臨時文件拷貝到相應的文件夾下
$file_path
=
$path
;
if
(!
file_exists
(
$path
)) {
$ret
[
'res'
] =
"0"
;
$ret
[
'msg'
] =
"上傳文件丟失!"
.
$_FILES
[
'excel'
][
'error'
];
return
json_encode(
$ret
);
}
//文件的擴展名
$ext
=
strtolower
(
pathinfo
(
$path
, PATHINFO_EXTENSION));
if
(
$ext
==
'xlsx'
) {
$objReader
= \PHPExcel_IOFactory::createReader(
'Excel2007'
);
$objPHPExcel
=
$objReader
->load(
$file_path
,
'utf-8'
);
}
elseif
(
$ext
==
'xls'
) {
$objReader
= \PHPExcel_IOFactory::createReader(
'Excel5'
);
$objPHPExcel
=
$objReader
->load(
$file_path
,
'utf-8'
);
}
$sheet
=
$objPHPExcel
->getSheet(0);
$highestRow
=
$sheet
->getHighestRow();
// 取得總行數
$highestColumn
=
$sheet
->getHighestColumn();
// 取得總列數
$ar
=
array
();
$i
= 0;
$importRows
= 0;
for
(
$j
= 2;
$j
<=
$highestRow
;
$j
++) {
$importRows
++;<br>
$realName
= (string)
$objPHPExcel
->getActiveSheet()->getCell(
"A$j"
)->getValue();
//須要導入的realName
$phone
= (string)
$objPHPExcel
->getActiveSheet()->getCell(
"B$j"
)->getValue();
//須要導入的phone
$company
= (string)
$objPHPExcel
->getActiveSheet()->getCell(
"C$j"
)->getValue();
//須要導入的company
$job
= (string)
$objPHPExcel
->getActiveSheet()->getCell(
"D$j"
)->getValue();
//須要導入的job
$email
= (string)
$objPHPExcel
->getActiveSheet()->getCell(
"E$j"
)->getValue();
//須要導入的email
$ret
[
'mdata'
] =
$this
->addMemb(
$phone
,
$realName
,
$company
,
$job
,
$email
);
//這裏就是個人數據庫添加操做定義的一個方法啦,對應替換爲本身的
if
(
$ret
[
'mdata'
] && !
is_Bool
(
$ret
[
'mdata'
])) {
$ar
[
$i
] =
$ret
[
'mdata'
];
$i
++;
}
}
if
(
$i
> 0) {
$ret
[
'res'
] =
"0"
;
$ret
[
'errNum'
] =
$i
;
$ret
[
'allNum'
] =
$importRows
;
$ret
[
'sucNum'
] =
$importRows
-
$i
;
$ret
[
'mdata'
] =
$ar
;
$ret
[
'msg'
] =
"導入完畢!"
;
return
json_encode(
$ret
);
}
$ret
[
'res'
] =
"1"
;
$ret
[
'allNum'
] =
$importRows
;
$ret
[
'errNum'
] = 0;
$ret
[
'sucNum'
] =
$importRows
;
$ret
[
'mdata'
] =
"導入成功!"
;
return
json_encode(
$ret
);
}
else
{
$ret
[
'res'
] =
"0"
;
$ret
[
'msg'
] =
"上傳文件失敗!"
;
return
json_encode(
$ret
);
}
}
|