office文件格式批量轉(zhuǎn)換工具(個(gè)人利用AI開發(fā))——墨澀網(wǎng)
前面搭建AI大模型知識庫的時(shí)候,本都好多doc格式的文件,但是知識庫不支持doc格式,支持新的docx格式,量少的情況下可以通過打開文件另存的方式手動(dòng)轉(zhuǎn)換,但是文件較多的時(shí)候,就必須使用工具批量轉(zhuǎn)換了,我想應(yīng)該這樣的工具在網(wǎng)上有很多,但是結(jié)構(gòu)搜完以后沒幾個(gè),而且下載要么收費(fèi),要么需要破解,于是自己借助Ai,使用Python 開發(fā)了一個(gè)批量轉(zhuǎn)換office文件格式的小工具,并把它打包做成了exe文件,方便使用。實(shí)現(xiàn)了doc轉(zhuǎn) docx(包括wps格式),xls 轉(zhuǎn) xlsx,ppt 轉(zhuǎn)pptx。
開發(fā)環(huán)境
運(yùn)行截圖
核心功能
?解決的問題
使用說明
?技術(shù)特點(diǎn)
下載地址:
exe文件:https://wwou.lanzoue.com/i4Nf12qsjdla
python源碼:https://wwou.lanzoue.com/iLDm82qsjdyd
源碼展示
import os
import time
from win32com import client as wc
def convert_doc_to_docx(file_path):
"""將doc/wps轉(zhuǎn)換為docx"""
try:
word = wc.Dispatch("kwps.Application")
doc = word.Documents.Open(file_path)
new_path = os.path.splitext(file_path)[0] + ".docx"
doc.SaveAs(new_path, 16)
doc.Close()
word.Quit()
print(f"已轉(zhuǎn)換:{os.path.basename(file_path)} → {os.path.basename(new_path)}")
return True
except Exception as e:
print(f"轉(zhuǎn)換失?。╠oc): {os.path.basename(file_path)} - {str(e)}")
return False
finally:
time.sleep(0.5)
def convert_xls_to_xlsx(file_path):
"""將xls轉(zhuǎn)換為xlsx"""
try:
excel = wc.Dispatch("ket.Application")
wb = excel.Workbooks.Open(file_path)
new_path = os.path.splitext(file_path)[0] + ".xlsx"
wb.SaveAs(new_path, 51)
wb.Close()
excel.Quit()
print(f"已轉(zhuǎn)換:{os.path.basename(file_path)} → {os.path.basename(new_path)}")
return True
except Exception as e:
print(f"轉(zhuǎn)換失?。▁ls): {os.path.basename(file_path)} - {str(e)}")
return False
finally:
time.sleep(0.5)
def convert_ppt_to_pptx(file_path):
"""將ppt轉(zhuǎn)換為pptx"""
try:
ppt = wc.Dispatch("kwpp.Application")
presentation = ppt.Presentations.Open(file_path)
new_path = os.path.splitext(file_path)[0] + ".pptx"
presentation.SaveAs(new_path, 26)
presentation.Close()
ppt.Quit()
print(f"已轉(zhuǎn)換:{os.path.basename(file_path)} → {os.path.basename(new_path)}")
return True
except Exception as e:
print(f"轉(zhuǎn)換失?。╬pt)[{file_path}]:{str(e)},錯(cuò)誤代碼:{e.args[0]}")
return False
finally:
time.sleep(0.5)
def batch_convert(root_folder):
"""遍歷目錄及子目錄"""
stats = {
'doc': {'success': 0, 'fail': 0},
'xls': {'success': 0, 'fail': 0},
'ppt': {'success': 0, 'fail': 0}
}
for foldername, subfolders, filenames in os.walk(root_folder):
for filename in filenames:
file_path = os.path.join(foldername, filename)
ext = os.path.splitext(filename)[1].lower()
result = None
key = None
if ext in ['.docx', '.xlsx', '.pptx']:
continue
if ext in ['.doc', '.wps']:
result = convert_doc_to_docx(file_path)
key = 'doc'
elif ext == '.xls':
result = convert_xls_to_xlsx(file_path)
key = 'xls'
elif ext == '.ppt':
result = convert_ppt_to_pptx(file_path)
key = 'ppt'
if key is not None and result is not None:
if result:
stats[key]['success'] += 1
else:
stats[key]['fail'] += 1
print(f'DEBUG: {filename} 類型={key} 結(jié)果={result}')
return stats
if __name__ == "__main__":
current_dir = os.getcwd()
print(f"開始轉(zhuǎn)換當(dāng)前目錄及子目錄:{current_dir}")
stats = batch_convert(current_dir)
print("\n轉(zhuǎn)換統(tǒng)計(jì)報(bào)告:")
total_success = 0
total_fail = 0
for file_type in ['doc', 'xls', 'ppt']:
success = stats[file_type]['success']
fail = stats[file_type]['fail']
total_success += success
total_fail += fail
print(f"{file_type.upper()}文件:成功 {success} 個(gè),失敗 {fail} 個(gè)")
print(f"\n總計(jì):成功 {total_success} 個(gè),失敗 {total_fail} 個(gè)")
input("按回車鍵退出...")
print("轉(zhuǎn)換完成!")
版權(quán)聲明:本文采用知識共享 署名4.0國際許可協(xié)議BY-NC-SA 進(jìn)行授權(quán)
文章作者:<墨澀>
文章鏈接:
免責(zé)聲明:本站為資源分享站,所有資源信息均來自網(wǎng)絡(luò),您必須在下載后的24個(gè)小時(shí)之內(nèi)從您的電腦中徹底刪除上述內(nèi)容;版權(quán)爭議與本站無關(guān),所有資源僅供學(xué)習(xí)參考研究目的,如果您訪問和下載此文件,表示您同意只將此文件用于參考、學(xué)習(xí)而非其他用途,否則一切后果請您自行承擔(dān),如果您喜歡該程序,請支持正版軟件,購買注冊,得到更好的正版服務(wù)。
本站為非盈利性站點(diǎn),并不販賣軟件,不存在任何商業(yè)目的及用途,網(wǎng)站會員捐贈(zèng)是您喜歡本站而產(chǎn)生的贊助支持行為,僅為維持服務(wù)器的開支與維護(hù),全憑自愿無任何強(qiáng)求。