需求背景:现在有九百多个excle表格,每个表格的格式都相同,需要把这些表格的内容都合并到一块,同时将文件名也增加到合并后的表格中,座位每一个excel的标识之一。
部分文件截图:
实现代码;
import xlrd, xlwt # 读写excle文件的两个库
import os # 操作文件的库
import pymysql # 连接MySQL的库
dir_str = r'D:\test_excle' # 指定存放excel文件地址
file_name = os.listdir(dir_str) # 返回指定目录下的所有文件和目录名
file_dir = [os.path.join(dir_str, x) for x in file_name]
for filename in file_dir:
inpath = filename # excel文件所在路径
extract(inpath)
def extract(inpath):
data = xlrd.open_workbook(inpath, encoding_override='utf-8')
table = data.sheets()[0] # 选定表
nrows = table.nrows # 获取行号
ncols = table.ncols # 获取列号
for i in range(2, nrows): # 第0行为表头
file_base = os.path.splitext(os.path.basename(inpath))[0]
# 如果文件名中有不要的字符串,可以用正则抽出需要的内容
# 场馆编号 = re.sub("[A-Za-z0-9_\!\%\[\]\,\。]", "", file_base)
alldata = table.row_values(i) # 循环输出excel表中每一行,即所有数据
data = pymysql.connect("localhost", "root", "123456", "test_excle") # 数据库连接信息
cursor = data.cursor()
try:
sql = "insert into tb_员工信息表(场馆编码,员工编号,姓名,职务,电话,性别) " \
"values('%s', '%s','%s','%s','%s','%s','%s','%s','%s')" % \
(file_base, alldata[0], alldata[1], alldata[2], alldata[3], alldata[4])
cursor.execute(sql)
# 提交到数据库执行
data.commit()
except Exception as e:
data.rollback()
print("数据插入错误:case%s" % e)
finally:
# 关闭游标连接
cursor.close()
# 关闭数据库连接
data.close()