使用Python開發(fā)提取word所有表格信息的程序
需要寫個批量提取表格信息的程序,來對這么多的表格進行數(shù)據(jù)的提取。
首先仍然需要在終端窗口內(nèi)用pip install引入模塊。
以下是實現(xiàn)批量提取表格信息的程序源碼:
import os import openpyxl from tkinter import * from tkinter import filedialog # 定義UI界面 class App: def __init__(self, master): self.master = master master.title('Excel內(nèi)容查找器') master.geometry('350x600') # 創(chuàng)建文件夾選擇按鈕 self.folder_button = Button(master, text='選擇文件夾', command=self.select_folder) self.folder_button.pack() # 創(chuàng)建查找內(nèi)容輸入框和按鈕 self.search_label = Label(master, text='請輸入要查找的內(nèi)容:') self.search_label.pack() # 創(chuàng)建20個文本框,用于輸入需要查找的內(nèi)容 self.search_entries = [] for i in range(20): search_entry = Entry(master) search_entry.pack() self.search_entries.append(search_entry) # 創(chuàng)建導出路徑輸入框和按鈕 self.export_label = Label(master, text='請選擇導出路徑:') self.export_label.pack() self.export_entry = Entry(master) self.export_entry.pack() self.export_button = Button(master, text='選擇路徑', command=self.select_export_path) self.export_button.pack() # 創(chuàng)建開始查找按鈕 self.search_button = Button(master, text='開始查找', command=self.search) self.search_button.pack() # 創(chuàng)建狀態(tài)欄 self.status_label = Label(master, text='') self.status_label.pack() # 選擇文件夾 def select_folder(self): self.folder_path = filedialog.askdirectory() self.status_label.config(text=f'已選擇文件夾:{self.folder_path}') # 選擇導出路徑 def select_export_path(self): export_path = filedialog.asksaveasfilename(defaultextension='.xlsx') self.export_entry.delete(0, END) self.export_entry.insert(END, export_path) # 查找指定內(nèi)容 def search(self): # 獲取要查找的內(nèi)容列表 search_texts = [entry.get().strip() for entry in self.search_entries if entry.get().strip()] if not search_texts: self.status_label.config(text='請至少輸入一個要查找的內(nèi)容') return # 獲取導出路徑 export_path = self.export_entry.get().strip() if not export_path: self.status_label.config(text='請選擇導出路徑') return # 創(chuàng)建新的Excel文件 export_wb = openpyxl.Workbook() export_ws = export_wb.active # 遍歷文件夾內(nèi)的所有Excel文件 for filename in os.listdir(self.folder_path): if filename.endswith('.xlsx'): # 打開Excel文件 filepath = os.path.join(self.folder_path, filename) wb = openpyxl.load_workbook(filepath) # 遍歷Excel文件中的所有工作表 for sheetname in wb.sheetnames: ws = wb[sheetname] # 遍歷工作表中的所有單元格 for row in ws.iter_rows(): for cell in row: for search_text in search_texts: if search_text in str(cell.value): # 如果找到指定內(nèi)容,提取所需內(nèi)容和緊隨其后的表格數(shù)據(jù) extract_data(wb, sheetname, cell.row, filepath, search_text, export_ws) # 保存并關閉新的Excel文件 export_wb.save(export_path) export_wb.close() self.status_label.config(text='查找完成') # 提取所需內(nèi)容和緊隨其后的表格數(shù)據(jù) def extract_data(wb, sheetname, row, filepath, search_text, export_ws): ws = wb[sheetname] # 提取所需內(nèi)容 data = [search_text] for col in range(1, ws.max_column + 1): data.append(ws.cell(row=row, column=col).value) # 將數(shù)據(jù)寫入新的Excel文件 export_ws.append(data) # 創(chuàng)建UI界面并運行程序 root = Tk() app = App(root) root.mainloop()
直接運行測試一下,得到下面長寬為350×600的UI界面:
選擇文件夾為可以選擇自己存放多個excel的文件夾,比如我這里選擇之前生成的名為13的文件夾:
然后選擇輸出路徑,并命名一個輸出的excel文件名稱,如下圖。
然后在這個基礎上在文本框內(nèi)輸入需要查找的內(nèi)容,這里我默認寫了可查找內(nèi)容為12,其實可以寫入更多,通過修改源代碼可以實現(xiàn):
最后點擊開始查找,最下方提示信息會提示查找完成就說明已經(jīng)找到自己需要的信息并提取到excel中。
我們打開excel查看一下得到的excel信息:
通過這個程序就不需要自己再這么多表格內(nèi)一個一個查找自己需要的內(nèi)容了,既費時而且不準確。
最后再講一下將python源碼封裝成的步驟,在python程序1中我有介紹用pyinstaller封裝的方法:教大家寫一個python的交互式.exe程序 。這里我介紹另外一種用自己比較習慣的方式進行封裝的方法。
首先需要找到模塊的安裝路徑,比如我的是:C:\Users\楊東旭\PycharmProjects\pythonProject7\venv\Scripts 將上面的源碼拷貝到此路徑下:
在pycharm中使用pip命令安裝cx_Freeze,在命令行中輸入以下命令:pip install cx_Freeze
在Scripts 文件夾中創(chuàng)建一個名為setup.py的文件,下面是源碼
import sys from cx_Freeze import setup, Executable build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} base = None if sys.platform == "win32": base = "Win32GUI" setup( name="程序名稱", version="1.0", description="My Application Description", options={"build_exe": build_exe_options}, executables=[Executable("你的源碼.py名稱.py", base=base)] )
注意這里的 程序名稱 和 你的源碼.py名稱 更改為自己對應的程序和文件名
最后在..\pythonProject7\venv\Scripts 路徑下執(zhí)行:python setup.py build
會得到build名稱的文件夾,里面就有.exe可執(zhí)行文件。
到此這篇關于使用Python開發(fā)提取word所有表格信息的程序的文章就介紹到這了,更多相關Python提取word表格信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python中的collections集合與typing數(shù)據(jù)類型模塊
這篇文章介紹了Python中的collections集合與typing數(shù)據(jù)類型模塊,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-05-05Python腳本實現(xiàn)音頻和視頻格式轉(zhuǎn)換
這篇文章主要為大家詳細介紹了Python如何通過腳本實現(xiàn)音頻和視頻格式轉(zhuǎn)換,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2025-03-03Python編程實現(xiàn)tail-n查看日志文件的方法
這篇文章主要介紹了Python編程實現(xiàn)tail-n查看日志文件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-07-07python實現(xiàn)兩個經(jīng)緯度點之間的距離和方位角的方法
今天小編就為大家分享一篇python實現(xiàn)兩個經(jīng)緯度點之間的距離和方位角的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07django和vue實現(xiàn)數(shù)據(jù)交互的方法
今天小編就為大家分享一篇django和vue實現(xiàn)數(shù)據(jù)交互的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08