xls文件 批量导入 MySQL 数据库

匿名 (未验证) 提交于 2019-12-02 22:06:11
公司 最近在做对比账单的事 一百多个xls文件 需要导入数据库 公司直间导出来的支付宝文件 用xlrd 打不开 之间报错 后缀改完也是不好用的 下面是我整理出来的 代码 希望对大家有用 有兴趣的朋友可以研究下pandas,应该比xlrd好用 有不足之处 下方留意指出 大家互相学习 共同进步 。
import MySQLdb import shutil  host = "localhost" conn = MySQLdb.connect(host=host, port=3306, user='root', password='123456', database='pdd_statistics', charset='utf8') cursor = conn.cursor() import xlrd import os import win32com.client as win32   # 查询 文件夹中的文件的名称 def paths():     global path     path = r'C:\Users\Administrator\Desktop\aaaaa'  # 这是本地的文件夹路径     for i in os.walk(path):         print(i[2])         return i[2]   # 修改 文件 def up_xlsx():     xlsxs = paths()     for x in xlsxs:         up_xlsxs = path+"\\"+str(x)  #路径 拼接文件的名称         excel = win32.gencache.EnsureDispatch('Excel.Application')         wb = excel.Workbooks.Open(up_xlsxs)         wb.SaveAs(up_xlsxs+"x", FileFormat=51)    #FileFormat = 51 is for .xlsx extension         wb.Close()                               #FileFormat = 56 is for .xls extension         excel.Application.Quit()         os.remove(up_xlsxs)     files_name()   # 运行新的文件 def files_name():     xlsxs = paths()     for x in xlsxs:         print(x, "文件的名称")         wj_name = path+"\\"+str(x)  #路径 拼接文件的名称         filename = xlrd.open_workbook(wj_name)    # 打开文件         sheets = filename.nsheets   # 获取当前文档的表(得到的是sheet的个数,一个整数)         sheet = filename.sheets()[0]  # 通过sheet索引获得sheet对象         lens_nrows = sheet.nrows   # 获取行数         ncols = sheet.ncols     # 获取列数         for i in range(1, lens_nrows-1):             print(i)             text = []             cell_value0 = sheet.cell_value(i, 0)             text.append(cell_value0)             cell_value1 = sheet.cell_value(i, 1)             text.append(cell_value1)             cell_value2 = sheet.cell_value(i, 2)             text.append(cell_value2)             cell_value3 = sheet.cell_value(i, 3)             text.append(cell_value3)             cell_value4 = sheet.cell_value(i, 4)             text.append(cell_value4)             cell_value5 = sheet.cell_value(i, 5)             print(text)             dbs_text = ((str(text[0]), str(text[1]), str(text[2]), str(text[3]), str(text[4]), str(text[5])))             try:                 sql_db(dbs_text)             except:                 pass   def sql_db(dbs_text):     sql = 'insert into pdd_zfb_copy(XXX1,XXX2,XXX3,XXX4,XXX5,XXX6) values (%s,%s,%s,%s,%s,%s)'     row_count = cursor.execute(sql, dbs_text)     conn.commit()    if __name__ == '__main__':     up_xlsx() 

其实上面那个 利用文件行数循环的那个 如果数据库属性比较多的话 可以做成循环的嵌套 我这是省事了, 直接粘贴
这套代码 修改只需要修改两个地方
1 path 这是本地的文件夹路径 只要改这个全局修改
2 sql_db() 函数中 的 数据库名称 和里面对应的属性值

写的比较low , 不喜勿喷

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!