需求背景:現在有九百多個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()