Skip to content

Commit b997789

Browse files
author
tuntun
committed
用python把excel中的数据导入到mysql
1 parent f79b1d9 commit b997789

1 file changed

Lines changed: 81 additions & 0 deletions

File tree

save_excel_to_mysql.py

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
# -*- coding:utf-8 -*-
2+
import xlrd
3+
import MySQLdb
4+
import os
5+
import sys
6+
7+
8+
def main(path):
9+
"""
10+
打开目录遍历excel文件并存储到mysql
11+
"""
12+
files = os.listdir(path)
13+
for file in files:
14+
save_file(path + '/' + file)
15+
print(file)
16+
17+
18+
def save_file(file):
19+
"""
20+
打开excel文件
21+
"""
22+
book = xlrd.open_workbook(file)
23+
sheet = book.sheet_by_index(0)
24+
row_nums = sheet.nrows
25+
col_nums = sheet.ncols
26+
27+
page = False # 是否分几次插入
28+
29+
data = []
30+
if row_nums < 2:
31+
return False
32+
if col_nums not in [23, 25]: # 两种excel格式,一个23列,一个25列
33+
return False
34+
35+
for rownumber in range(1, row_nums):
36+
if page is True:
37+
data = []
38+
values = sheet.row_values(rownumber)
39+
values.insert(0, 0)
40+
if values[1] == '':
41+
return False
42+
43+
# 不同形式表格差异处理
44+
if col_nums == 23:
45+
values.insert(7, '')
46+
values.insert(8, '')
47+
48+
if values[20] == '':
49+
values[20] == '0000-00-00 00:00:00'
50+
if values[21] == '':
51+
values[21] = '0000-00-00 00:00:00'
52+
53+
data.append(tuple(values))
54+
totals = len(data)
55+
page = False
56+
if totals >= 2000:
57+
insert(data)
58+
page = True
59+
del data
60+
61+
insert(data)
62+
return True
63+
64+
65+
def insert(data):
66+
"""
67+
将excel表格所有数据一次插入到mysql中
68+
"""
69+
db = MySQLdb.connect(host="localhost", user="root", passwd="", db="fahuo", use_unicode=True, charset="utf8")
70+
c = db.cursor()
71+
72+
c.executemany(
73+
"""INSERT INTO `order` VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
74+
data)
75+
db.commit()
76+
db.close()
77+
78+
79+
if __name__ == "__main__":
80+
path = './exceltest'
81+
main(path)

0 commit comments

Comments
 (0)