Python實(shí)現(xiàn)Excel表格轉(zhuǎn)置與翻譯工具
介紹一個(gè)使用Python編寫的GUI程序,該程序能夠讀取Excel文件,將第一個(gè)列的數(shù)據(jù)轉(zhuǎn)置,并將英文內(nèi)容翻譯成中文,最后保存到新的Excel文件中。程序使用wxPython構(gòu)建GUI界面,pandas處理Excel數(shù)據(jù),googletrans進(jìn)行翻譯。
C:\pythoncode\new\rotateexcel.py
一、 功能概述
該程序主要實(shí)現(xiàn)以下功能:
- 選擇Excel文件: 用戶可以通過GUI界面選擇需要處理的Excel文件(.xlsx格式)。
- 選擇保存路徑: 用戶可以選擇保存處理后文件的路徑。
- 轉(zhuǎn)置與翻譯: 程序讀取Excel文件,提取第一個(gè)列(從第二行開始)的數(shù)據(jù),進(jìn)行轉(zhuǎn)置,并將英文內(nèi)容翻譯成中文。
- 保存結(jié)果: 將翻譯后的數(shù)據(jù)保存到新的Excel文件中,文件名與原文件名相同,并在文件名后添加_translated后綴。
- 錯(cuò)誤處理: 程序包含錯(cuò)誤處理機(jī)制,能夠捕獲并顯示文件讀取錯(cuò)誤、翻譯錯(cuò)誤等異常信息。
- 進(jìn)度提示: 程序通過消息框提示用戶操作進(jìn)度(文件選擇、保存路徑選擇、轉(zhuǎn)換完成、錯(cuò)誤提示等)。
全部代碼
import wx import pandas as pd import os from googletrans import Translator class ExcelTransposer(wx.Frame): def __init__(self, *args, **kwargs): super(ExcelTransposer, self).__init__(*args, **kwargs) # Set up the frame self.InitUI() self.translator = Translator() # 初始化翻譯器 def InitUI(self): panel = wx.Panel(self) vbox = wx.BoxSizer(wx.VERTICAL) # File selection file_box = wx.BoxSizer(wx.HORIZONTAL) self.file_path = wx.TextCtrl(panel) file_btn = wx.Button(panel, label="選擇xlsx文件") file_btn.Bind(wx.EVT_BUTTON, self.OnSelectFile) file_box.Add(self.file_path, proportion=1, flag=wx.EXPAND|wx.ALL, border=5) file_box.Add(file_btn, flag=wx.ALL, border=5) # Output folder selection save_box = wx.BoxSizer(wx.HORIZONTAL) self.save_path = wx.TextCtrl(panel) save_btn = wx.Button(panel, label="選擇保存路徑") save_btn.Bind(wx.EVT_BUTTON, self.OnSelectSavePath) save_box.Add(self.save_path, proportion=1, flag=wx.EXPAND|wx.ALL, border=5) save_box.Add(save_btn, flag=wx.ALL, border=5) # Convert button convert_btn = wx.Button(panel, label="轉(zhuǎn)換并翻譯") convert_btn.Bind(wx.EVT_BUTTON, self.OnConvert) # Add to vbox vbox.Add(file_box, flag=wx.EXPAND|wx.ALL, border=5) vbox.Add(save_box, flag=wx.EXPAND|wx.ALL, border=5) vbox.Add(convert_btn, flag=wx.ALIGN_CENTER|wx.ALL, border=10) panel.SetSizer(vbox) self.SetTitle("Excel Sheet 轉(zhuǎn)置和翻譯器") self.SetSize((400, 200)) self.Centre() def OnSelectFile(self, event): with wx.FileDialog(self, "選擇 Excel 文件", wildcard="Excel files (*.xlsx)|*.xlsx", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST) as fileDialog: if fileDialog.ShowModal() == wx.ID_CANCEL: return path = fileDialog.GetPath() self.file_path.SetValue(path) def OnSelectSavePath(self, event): with wx.DirDialog(self, "選擇保存文件夾", style=wx.DD_DEFAULT_STYLE) as dirDialog: if dirDialog.ShowModal() == wx.ID_CANCEL: return path = dirDialog.GetPath() self.save_path.SetValue(path) def OnConvert(self, event): excel_path = self.file_path.GetValue() save_folder = self.save_path.GetValue() if not excel_path or not save_folder: wx.MessageBox("請(qǐng)選擇文件和保存路徑", "錯(cuò)誤", wx.ICON_ERROR) return try: # Load the Excel file xlsx = pd.ExcelFile(excel_path) for sheet_name in xlsx.sheet_names: # Read each sheet df = xlsx.parse(sheet_name) if df.shape[0] < 2: wx.MessageBox(f"Sheet {sheet_name} 數(shù)據(jù)不足", "警告", wx.ICON_WARNING) continue # Transpose first column starting from second row (ignoring first row) transposed_data = df.iloc[1:, 0].values.T # Translate the English text to Chinese translated_data = [self.translator.translate(text, src='en', dest='zh-cn').text for text in transposed_data] # Convert translated data to DataFrame translated_df = pd.DataFrame([translated_data]) # Save to a new Excel file output_file = os.path.join(save_folder, f"{sheet_name}_translated.xlsx") with pd.ExcelWriter(output_file) as writer: translated_df.to_excel(writer, index=False, header=False, sheet_name=sheet_name) wx.MessageBox("轉(zhuǎn)換并翻譯完成", "成功", wx.ICON_INFORMATION) except Exception as e: wx.MessageBox(f"出現(xiàn)錯(cuò)誤: {e}", "錯(cuò)誤", wx.ICON_ERROR) if __name__ == '__main__': app = wx.App() frame = ExcelTransposer(None) frame.Show() app.MainLoop()
二、 代碼分析
程序主要由ExcelTransposer類構(gòu)成,該類繼承自wx.Frame,實(shí)現(xiàn)了GUI界面的創(chuàng)建和事件處理。
import wx import pandas as pd import os from googletrans import Translator class ExcelTransposer(wx.Frame): # ... (代碼略) ...
__init__方法: 初始化GUI界面和翻譯器實(shí)例。
InitUI方法: 創(chuàng)建GUI界面元素,包括文件選擇按鈕、保存路徑選擇按鈕和轉(zhuǎn)換按鈕。使用了wx.BoxSizer進(jìn)行布局管理,使界面更整潔美觀。
OnSelectFile方法: 使用wx.FileDialog允許用戶選擇Excel文件,并將文件路徑顯示在文本框中。
OnSelectSavePath方法: 使用wx.DirDialog允許用戶選擇保存文件的路徑,并將路徑顯示在文本框中。
OnConvert方法: 這是程序的核心部分,負(fù)責(zé)讀取Excel文件、進(jìn)行數(shù)據(jù)處理和翻譯、保存結(jié)果文件。
- 讀取Excel文件: 使用pandas.ExcelFile讀取Excel文件。
- 循環(huán)處理每個(gè)sheet: 程序遍歷Excel文件中的每個(gè)sheet。
- 數(shù)據(jù)轉(zhuǎn)置: 使用df.iloc[1:, 0].values.T提取第一個(gè)列(從第二行開始)的數(shù)據(jù)并進(jìn)行轉(zhuǎn)置。
- 翻譯: 使用googletrans.Translator將英文文本翻譯成中文。
- 保存結(jié)果: 使用pandas.ExcelWriter將翻譯后的數(shù)據(jù)保存到新的Excel文件中。
- 錯(cuò)誤處理: 使用try...except塊捕獲可能出現(xiàn)的異常,并顯示錯(cuò)誤信息。
三、 運(yùn)行程序
確保已安裝必要的庫:wxPython, pandas, googletrans。可以使用pip安裝:
pip install wxPython pandas googletrans==4.0.0-rc1
保存代碼為.py文件(例如excel_transposer.py)。
運(yùn)行程序:python excel_transposer.py
程序運(yùn)行后會(huì)顯示一個(gè)GUI窗口,用戶可以按照提示選擇Excel文件、保存路徑,并點(diǎn)擊“轉(zhuǎn)換并翻譯”按鈕進(jìn)行處理。
運(yùn)行結(jié)果
四、 總結(jié)
這個(gè)程序提供了一個(gè)方便易用的工具,可以批量處理Excel文件,將數(shù)據(jù)轉(zhuǎn)置并進(jìn)行翻譯。程序結(jié)構(gòu)清晰,代碼易于理解和維護(hù)。通過使用wxPython,程序擁有友好的用戶界面,提高了用戶體驗(yàn)。 不過,需要注意的是,googletrans的翻譯質(zhì)量和速度可能受網(wǎng)絡(luò)狀況影響。 此外,對(duì)于大文件,處理時(shí)間可能會(huì)較長。 未來可以考慮添加進(jìn)度條等功能來提升用戶體驗(yàn)。
到此這篇關(guān)于Python實(shí)現(xiàn)Excel表格轉(zhuǎn)置與翻譯工具的文章就介紹到這了,更多相關(guān)Python Excel表格轉(zhuǎn)置與翻譯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python datetime處理時(shí)間小結(jié)
這篇文章主要介紹了python datetime處理時(shí)間小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04pyinstaller打包opencv和numpy程序運(yùn)行錯(cuò)誤解決
這篇文章主要介紹了pyinstaller打包opencv和numpy程序運(yùn)行錯(cuò)誤解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08Python3隨機(jī)漫步生成數(shù)據(jù)并繪制
這篇文章主要為大家詳細(xì)介紹了Python3隨機(jī)漫步生成數(shù)據(jù)并繪制的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Selenium向iframe富文本框輸入內(nèi)容過程圖解
這篇文章主要介紹了Selenium向iframe富文本框輸入內(nèi)容過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換
這篇文章主要為大家介紹了python數(shù)字圖像處理數(shù)據(jù)類型及顏色空間轉(zhuǎn)換示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06python中WSGI是什么,Python應(yīng)用WSGI詳解
這篇文章主要介紹一下python中的WSGI, 小編在網(wǎng)上找了幾篇非常好的關(guān)于WSGI介紹,整理一下分享給大家。2017-11-11