作者:xujing123
前言:老大讓我給個excel收集數據,又覺得不好看,作者寫了個正式的word文檔但是格式是doc,無法用docx庫讀取,
數據暫時拿不到暫時安排為三層文件,利用python的pywin32模塊 將doc批量轉換成docx,在轉換成xls表方便導入數據。
pywin32只能在windows下使用,處理文件拉垮
docx可以跨平台,批量轉換成excel導入數據庫
第一層是全部文件夾
第二層是各個公司存儲數據文件夾
第三層是數據文件import os # 用於獲取目標文件所在路徑
import os # 用於獲取目標文件所在路徑 from win32com import client as wc # 導入模塊 from docx import Document import xlrd from xlutils.copy import copy def zhuanhuan(): ''' 轉換docx格式 :return: ''' path = "d:\\Users\\Administrator\\Desktop\\新建文件夾\\" # 待處理文件夾 dest_path = "d:\\Users\\Administrator\\Desktop\\新建文件夾 (2)\\" #保存文件夾 word = wc.Dispatch("Word.application") # 打開word應用程序 for file in os.listdir(path): #循環讀取這個文件夾下所有文件 print("3") path = path = "d:\\Users\\Administrator\\Desktop\\新建文件夾\\" path += str(file + "\\") print("文件夾位置",path) for file in os.listdir(path): print("文件名",file) (file_path, temp_file_name) = os.path.split(file) (short_name, extension) = os.path.splitext(temp_file_name) doc = word.Documents.Open(path + file) doc.SaveAs(dest_path + short_name + ".docx", 12) # 另存為后綴為".docx"的文件,其中參數12指doc文件 doc.Close() word.Quit() def read(): dest_path = "d:\\Users\\Administrator\\Desktop\\新建文件夾 (2)\\" #保存文件夾 for file in os.listdir(dest_path): list = [] # 存儲word單元格數據 doc = Document( dest_path + file ) allTables = doc.tables print(file) for table in allTables: #我的文檔里有兩個word表格,第二個為空 for i in range(len(atle.rows)): if i <4: list.append(table.cell(i,1).text) list.append(table.cell(i,3).text) else: list.append(table.cell(i,1).text) if len(list) == 11: write(list) break def write(list): path = "d:\\Users\\Administrator\\Desktop\\招聘.xls" r_xls = xlrd.open_workbook(path) # 打開Excel文件讀取數據 r_sheet = r_xls.sheet_by_index(0) # 通過索引順序獲取 rows = r_sheet.nrows # 獲取行數 w_xls = copy(r_xls) sheet_write = w_xls.get_sheet(0) for i in range(0, len(list)): sheet_write.write(rows, i, list[i]) w_xls.save( "d:\\Users\\Administrator\\Desktop\\招聘.xls") zhuanhuan() read()
手有點生,本來是想用pandas來存excel的,xlrd存儲有點麻煩,下回開始復習pandas
文件參數可以參照 這篇文章