From b69168fc33ac8e451aed489ede9f6190e73362b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=85=E6=AD=A3=E4=B8=AD?= Date: Fri, 10 Jan 2025 16:32:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=84=AA=E5=8C=96=E7=A8=8B=E5=BC=8F=E7=A2=BC?= =?UTF-8?q?=E6=9E=B6=E6=A7=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/launch.json | 4 +- ...63\345\267\245\344\275\234\350\241\250.py" | 202 ++++++++++------- ...53\345\205\245\346\274\242\345\255\227.py" | 3 +- ...31\351\237\263\346\274\242\345\255\227.py" | 203 ++++++++++++++++++ output7/working.xlsx | Bin 440508 -> 440507 bytes ...\347\246\261\346\226\207\343\200\213.xlsx" | Bin 440504 -> 440507 bytes p709_reset_han_ji_cells.py | 2 + process_log.txt | 111 ++++++++++ tmp.txt | 16 +- 9 files changed, 452 insertions(+), 89 deletions(-) create mode 100644 "a705_\350\274\270\345\207\272\345\267\261\346\250\231\351\237\263\346\274\242\345\255\227.py" diff --git a/.vscode/launch.json b/.vscode/launch.json index ebf6d68..34f3289 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,10 +5,10 @@ "version": "0.2.0", "configurations": [ { - "name": "p750_將儲存格漢字另存成文字檔", + "name": "a705_輸出己標音漢字", "type": "debugpy", "request": "launch", - "program": "p750_將儲存格漢字另存成文字檔.py", + "program": "a705_輸出己標音漢字.py", "console": "integratedTerminal", }, { diff --git "a/a700_\351\207\215\347\275\256\346\274\242\345\255\227\346\250\231\351\237\263\345\267\245\344\275\234\350\241\250.py" "b/a700_\351\207\215\347\275\256\346\274\242\345\255\227\346\250\231\351\237\263\345\267\245\344\275\234\350\241\250.py" index 4b3699a..6499d99 100644 --- "a/a700_\351\207\215\347\275\256\346\274\242\345\255\227\346\250\231\351\237\263\345\267\245\344\275\234\350\241\250.py" +++ "b/a700_\351\207\215\347\275\256\346\274\242\345\255\227\346\250\231\351\237\263\345\267\245\344\275\234\350\241\250.py" @@ -1,89 +1,143 @@ +import logging import os import sys from pathlib import Path +# 載入第三方套件 import xlwings as xw +from dotenv import load_dotenv +# 載入自訂模組 from p709_reset_han_ji_cells import reset_han_ji_cells # ========================================================================= -# (1) 取得專案根目錄。 +# 載入環境變數 # ========================================================================= -# 獲取當前檔案的路徑 -current_file_path = Path(__file__).resolve() +load_dotenv() -# 專案根目錄 -project_root = current_file_path.parent +# 預設檔案名稱從環境變數讀取 +DB_HO_LOK_UE = os.getenv('DB_HO_LOK_UE', 'Ho_Lok_Ue.db') +DB_KONG_UN = os.getenv('DB_KONG_UN', 'Kong_Un.db') + +# ========================================================================= +# 設定日誌 +# ========================================================================= +logging.basicConfig( + filename='process_log.txt', + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' +) + +# ========================================================================= +# 定義 Exit Code +# ========================================================================= +EXIT_CODE_SUCCESS = 0 # 成功 +EXIT_CODE_NO_FILE = 1 # 無法找到檔案 +EXIT_CODE_INVALID_INPUT = 2 # 輸入錯誤 +EXIT_CODE_PROCESS_FAILURE = 3 # 過程失敗 +EXIT_CODE_UNKNOWN_ERROR = 99 # 未知錯誤 + +# ========================================================================= +# 定義 Exit Code +# ========================================================================= +def logging_process_step(msg): + print(msg) + logging.info(msg) + +# ========================================================================= +# 本程式主要處理作業程序 +# ========================================================================= +def process(wb): + #-------------------------------------------------------------------------- + # 將儲存格內的舊資料清除 + #-------------------------------------------------------------------------- + sheet = wb.sheets['漢字注音'] # 選擇工作表 + sheet.activate() # 將「漢字注音」工作表設為作用中工作表 + sheet.range('A1').select() # 將 A1 儲存格設為作用儲存格 + + total_rows = wb.names['每頁總列數'].refers_to_range.value + cells_per_row = 4 + end_of_rows = int((total_rows * cells_per_row ) + 2) + cells_range = f'D3:R{end_of_rows}' + + sheet.range(cells_range).clear_contents() # 清除 C3:R{end_of_row} 範圍的內容 + + # 獲取 V3 儲存格的合併範圍 + merged_range = sheet.range('V3').merge_area + # 清空合併儲存格的內容 + merged_range.clear_contents() + + #-------------------------------------------------------------------------- + # 將待注音的【漢字儲存格】,文字顏色重設為黑色(自動 RGB: 0, 0, 0);填漢顏色重設為無填滿 + #-------------------------------------------------------------------------- + logging_process_step(f"開始【漢字注音】工作表的清空、重置!") + if reset_han_ji_cells(wb) == EXIT_CODE_SUCCESS: + logging_process_step(f"完成【漢字注音】工作表的清空、重置!") + else: + logging_process_step(f"【漢字注音】工作表的清空、重置失敗!") + return EXIT_CODE_PROCESS_FAILURE + + return EXIT_CODE_SUCCESS -print(f"專案根目錄為: {project_root}") # ========================================================================= -# (2) 若無指定輸入檔案,則獲取當前作用中的 Excel 檔案並另存新檔。 +# 程式主要作業流程 # ========================================================================= -wb = None -# 使用已打開且處於作用中的 Excel 工作簿 -try: - # 嘗試獲取當前作用中的 Excel 工作簿 - wb = xw.apps.active.books.active -except Exception as e: - print(f"發生錯誤: {e}") - print("無法找到作用中的 Excel 工作簿") - sys.exit(2) - -if not wb: - print("無法執行,可能原因:(1) 未指定輸入檔案;(2) 未找到作用中的 Excel 工作簿") - sys.exit(2) - -#-------------------------------------------------------------------------- -# 將儲存格內的舊資料清除 -#-------------------------------------------------------------------------- -sheet = wb.sheets['漢字注音'] # 選擇工作表 -sheet.activate() # 將「漢字注音」工作表設為作用中工作表 -sheet.range('A1').select() # 將 A1 儲存格設為作用儲存格 - -total_rows = wb.names['每頁總列數'].refers_to_range.value -cells_per_row = 4 -end_of_rows = int((total_rows * cells_per_row ) + 2) -cells_range = f'D3:R{end_of_rows}' - -sheet.range(cells_range).clear_contents() # 清除 C3:R{end_of_row} 範圍的內容 - -# 獲取 V3 儲存格的合併範圍 -merged_range = sheet.range('V3').merge_area -# 清空合併儲存格的內容 -merged_range.clear_contents() - -#-------------------------------------------------------------------------- -# 將待注音的【漢字儲存格】,文字顏色重設為黑色(自動 RGB: 0, 0, 0);填漢顏色重設為無填滿 -#-------------------------------------------------------------------------- -reset_han_ji_cells(wb) - -# 儲存新建立的工作簿 -wb.save() - -print(f"【漢字注音】工作表已清空、重置!") -#-------------------------------------------------------------------------- -# 另存新檔 -#-------------------------------------------------------------------------- -# 將待注音的【漢字儲存格】,文字顏色重設為黑色(自動 RGB: 0, 0, 0);填漢顏色重設為無填滿 -# # 將檔案存放路徑設為【專案根目錄】之下 -# try: -# file_name = str(wb.names['TITLE'].refers_to_range.value).strip() -# except KeyError: -# print("未找到命名範圍 'TITLE',使用預設名稱") -# # file_name = "Tai_Gi_Zu_Im_Bun.xlsx" # 提供一個預設檔案名稱 -# setting_sheet = wb.sheets["env"] -# file_name = str( -# setting_sheet.range("C4").value -# ).strip() - -# # 設定檔案輸出路徑,存於專案根目錄下的 output2 資料夾 -# output_path = wb.names['OUTPUT_PATH'].refers_to_range.value -# new_file_path = os.path.join( -# ".\\{0}".format(output_path), -# f"【河洛話注音】{file_name}.xlsx") - -# # 儲存新建立的工作簿 -# wb.save(new_file_path) - -# print(f"待注音漢字已備妥: {new_file_path}") +def main(): + # ========================================================================= + # (1) 取得專案根目錄。 + # ========================================================================= + current_file_path = Path(__file__).resolve() + project_root = current_file_path.parent + logging_process_step(f"專案根目錄為: {project_root}") + + # ========================================================================= + # (2) 若無指定輸入檔案,則獲取當前作用中的 Excel 檔案並另存新檔。 + # ========================================================================= + wb = None + # 使用已打開且處於作用中的 Excel 工作簿 + try: + # 嘗試獲取當前作用中的 Excel 工作簿 + wb = xw.apps.active.books.active + except Exception as e: + logging_process_step(f"發生錯誤: {e}") + logging.error(f"無法找到作用中的 Excel 工作簿: {e}", exc_info=True) + return EXIT_CODE_NO_FILE + + if not wb: + logging_process_step("無法作業,因未無任何 Excel 檔案己開啟。") + return EXIT_CODE_NO_FILE + + try: + # ========================================================================= + # (3) 執行【處理作業】 + # ========================================================================= + result_code = process(wb) + if result_code != EXIT_CODE_SUCCESS: + logging_process_step("處理作業失敗,過程中出錯!") + return result_code + + except Exception as e: + print(f"執行過程中發生未知錯誤: {e}") + logging.error(f"執行過程中發生未知錯誤: {e}", exc_info=True) + return EXIT_CODE_UNKNOWN_ERROR + + finally: + if wb: + wb.save() + # 是否關閉 Excel 視窗可根據需求決定 + # xw.apps.active.quit() # 確保 Excel 被釋放資源,避免開啟殘留 + logging.info("釋放 Excel 資源,處理完成。") + + # 結束作業 + logging.info("作業成功完成!") + return EXIT_CODE_SUCCESS + + +if __name__ == "__main__": + exit_code = main() + if exit_code == EXIT_CODE_SUCCESS: + print("作業正常結束!") + else: + print(f"作業異常終止,錯誤代碼為: {exit_code}") + sys.exit(exit_code) diff --git "a/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py" "b/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py" index 3cc66e5..811e622 100644 --- "a/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py" +++ "b/a701_\344\275\234\346\245\255\344\270\255\346\264\273\351\240\201\346\252\224\345\241\253\345\205\245\346\274\242\345\255\227.py" @@ -135,7 +135,8 @@ def main(): finally: if wb: # 是否關閉 Excel 視窗可根據需求決定 - xw.apps.active.quit() # 確保 Excel 被釋放資源,避免開啟殘留 + # xw.apps.active.quit() # 確保 Excel 被釋放資源,避免開啟殘留 + logging.error(f"作業正常完成!") return EXIT_CODE_SUCCESS diff --git "a/a705_\350\274\270\345\207\272\345\267\261\346\250\231\351\237\263\346\274\242\345\255\227.py" "b/a705_\350\274\270\345\207\272\345\267\261\346\250\231\351\237\263\346\274\242\345\255\227.py" new file mode 100644 index 0000000..0cb1e38 --- /dev/null +++ "b/a705_\350\274\270\345\207\272\345\267\261\346\250\231\351\237\263\346\274\242\345\255\227.py" @@ -0,0 +1,203 @@ +import logging +import os +import sys +from pathlib import Path + +# 載入第三方套件 +import xlwings as xw +from dotenv import load_dotenv + +# 載入自訂模組 +from p709_reset_han_ji_cells import reset_han_ji_cells + +# ========================================================================= +# 載入環境變數 +# ========================================================================= +load_dotenv() + +# 預設檔案名稱從環境變數讀取 +DB_HO_LOK_UE = os.getenv('DB_HO_LOK_UE', 'Ho_Lok_Ue.db') +DB_KONG_UN = os.getenv('DB_KONG_UN', 'Kong_Un.db') + +# ========================================================================= +# 設定日誌 +# ========================================================================= +logging.basicConfig( + filename='process_log.txt', + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s' +) + +# ========================================================================= +# 定義 Exit Code +# ========================================================================= +EXIT_CODE_SUCCESS = 0 # 成功 +EXIT_CODE_NO_FILE = 1 # 無法找到檔案 +EXIT_CODE_INVALID_INPUT = 2 # 輸入錯誤 +EXIT_CODE_PROCESS_FAILURE = 3 # 過程失敗 +EXIT_CODE_UNKNOWN_ERROR = 99 # 未知錯誤 + +# ========================================================================= +# 定義 Exit Code +# ========================================================================= +def logging_process_step(msg): + print(msg) + logging.info(msg) + +# ========================================================================= +# Local Function +# ========================================================================= +def dump_txt_file(file_path): + """ + 在螢幕 Dump 純文字檔內容。 + """ + print("\n【文字檔內容】:") + print("========================================\n") + try: + with open(file_path, 'r', encoding='utf-8') as f: + content = f.read() + print(content) + except FileNotFoundError: + print(f"無法找到檔案:{file_path}") + +# ========================================================================= +# 本程式主要處理作業程序 +# ========================================================================= +def process(wb): + """ + 將 Excel 工作表中指定區域的漢字取出,儲存為一個純文字檔。 + """ + # 選擇工作表 + sheet = wb.sheets['漢字注音'] + sheet.activate() + #-------------------------------------------------------------------------- + # 自【env】設定工作表,取得處理作業所需參數 + #-------------------------------------------------------------------------- + + # 設定起始及結束的【列】位址(【第5列】、【第9列】、【第13列】等列) + TOTAL_LINES = int(wb.names['每頁總列數'].refers_to_range.value) + ROWS_PER_LINE = 4 + start_row = 5 + end_row = start_row + (TOTAL_LINES * ROWS_PER_LINE) + + # 設定起始及結束的【欄】位址(【D欄=4】到【R欄=18】) + CHARS_PER_ROW = int(wb.names['每列總字數'].refers_to_range.value) + start_col = 4 + end_col = start_col + CHARS_PER_ROW + + #-------------------------------------------------------------------------- + # 作業處理:逐列取出漢字,組合成純文字檔 + #-------------------------------------------------------------------------- + logging_process_step(f"開始【處理作業】...") + han_ji_text = "" + end_of_file = False + line = 1 + + # 逐列處理作業 + for row in range(start_row, end_row, ROWS_PER_LINE): + if end_of_file or line > TOTAL_LINES: + break + + # 設定【作用儲存格】為列首 + sheet.range((row, 1)).select() + + # 逐欄取出儲存格內容 + for col in range(start_col, end_col): + col_name = xw.utils.col_name(col) # 取得欄位名稱 + cell_value = sheet.range((row, col)).value + if cell_value == 'φ': # 讀到【結尾標示】 + end_of_file = True + break + elif cell_value == '\n': # 讀到【換行標示】 + han_ji_text += '\n' + break + elif cell_value == None: # 讀到【空白】 + print(f"({row}, {col_name}) = 《空白》") + else: # 讀到:漢字或標點符號 + han_ji_text += cell_value + print(f"({row}, {col_name}) = {cell_value}") + + # 已到【結尾處】之作業結束處理 + if end_of_file: + print(f"第 {row} 列為檔案結尾處,結束處理作業。") + break + + # 換行處理:(1)每處理完 15 字後,換下一行 ;(2) 讀到【換行標示】 + line += 1 + print(f"({row}, {col_name}) = 《換行》") + + # 將所有漢字寫入文字檔 + output_file = 'tmp.txt' + with open(output_file, 'w', encoding='utf-8') as f: + f.write(han_ji_text) + logging_process_step(f"已成功將漢字輸出至檔案:{output_file}") + + # 螢幕 Dump 檔案內容 + dump_txt_file(output_file) + + # 作業結束前處理 + logging_process_step(f"完成【處理作業】...") + return EXIT_CODE_SUCCESS + + +# ========================================================================= +# 程式主要作業流程 +# ========================================================================= +def main(): + # ========================================================================= + # (1) 取得專案根目錄。 + # ========================================================================= + current_file_path = Path(__file__).resolve() + project_root = current_file_path.parent + logging_process_step(f"專案根目錄為: {project_root}") + + # ========================================================================= + # (2) 若無指定輸入檔案,則獲取當前作用中的 Excel 檔案並另存新檔。 + # ========================================================================= + wb = None + # 使用已打開且處於作用中的 Excel 工作簿 + try: + # 嘗試獲取當前作用中的 Excel 工作簿 + wb = xw.apps.active.books.active + except Exception as e: + logging_process_step(f"發生錯誤: {e}") + logging.error(f"無法找到作用中的 Excel 工作簿: {e}", exc_info=True) + return EXIT_CODE_NO_FILE + + if not wb: + logging_process_step("無法作業,因未無任何 Excel 檔案己開啟。") + return EXIT_CODE_NO_FILE + + try: + # ========================================================================= + # (3) 執行【處理作業】 + # ========================================================================= + result_code = process(wb) + if result_code != EXIT_CODE_SUCCESS: + logging_process_step("處理作業失敗,過程中出錯!") + return result_code + + except Exception as e: + print(f"執行過程中發生未知錯誤: {e}") + logging.error(f"執行過程中發生未知錯誤: {e}", exc_info=True) + return EXIT_CODE_UNKNOWN_ERROR + + finally: + if wb: + wb.save() + # 是否關閉 Excel 視窗可根據需求決定 + # xw.apps.active.quit() # 確保 Excel 被釋放資源,避免開啟殘留 + logging.info("釋放 Excel 資源,處理完成。") + + # 結束作業 + logging.info("作業成功完成!") + return EXIT_CODE_SUCCESS + + +if __name__ == "__main__": + exit_code = main() + if exit_code == EXIT_CODE_SUCCESS: + print("作業正常結束!") + else: + print(f"作業異常終止,錯誤代碼為: {exit_code}") + sys.exit(exit_code) diff --git a/output7/working.xlsx b/output7/working.xlsx index 441efbb8e376eba1f503cb4246660484d6ff2b55..3a092cfe3a3af40bd85de27bcf69e4977d1a8fd1 100644 GIT binary patch delta 2851 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 H;AsB?!U!Zb delta 2843 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 Q_uTwCKpfC71Gu{X0f%}jMF0Q* diff --git "a/output7/\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212\345\260\232\346\234\211\345\212\233\351\207\217\347\232\204\346\257\217\346\227\245\347\245\210\347\246\261\346\226\207\343\200\213.xlsx" "b/output7/\343\200\220\346\262\263\346\264\233\347\231\275\350\251\261\346\263\250\351\237\263-\351\233\205\344\277\227\351\200\232\343\200\221\343\200\212\345\260\232\346\234\211\345\212\233\351\207\217\347\232\204\346\257\217\346\227\245\347\245\210\347\246\261\346\226\207\343\200\213.xlsx" index d32f01de8d5512728f064e13affbd6de8c4e0727..6bcba1a955a569edc6355e4911852dd993d8f08f 100644 GIT binary patch delta 2750 zcmYk82{e@JAIE3w&A2WqV;fs#$ym!+izv&*U}WD@*0NOgttoqmGQ(>fiZ)ARm{Bp7 ztjSiExN)u7X>ctO|52UuzwbG}^L#(w^L@_mJli>MHG}^xgTI`HL}Daj{}DR`fwU0o zkrGfZ;wy6ySwvi#G#a+p+?cT$)%N7VXUJ%>AOfyI*5racH$HhHCY;oc?k9|Zg28k8== z`}kL~)hlw$IHJ zWT+{oOxPwXJM%3~D4+}bD+zXFj%NnCrZ`7?fi%CEdf2VJO-b?NkE=OjxD32Ce_ZUq z^g4KGF-AdEMEg zhNIP{eO?q7m7+11&XRmpUEMY}MLWEO!u7MUW?0vM#Z@k{b==1%DgkpYMSeBF>ufb! z-KFt+(l#<>N>6WI^ z(%-f-6w7qc__H?pXu^_1%cvz>rQ=OI;-O)!puJ9Z`MVrE?z(blkGZ5`XqY~olKDEoWyE{{0UT6yW z>DV>aT()R`h(vEK%_(S;Zu00;v;vW;#V;MWOrI4D9}L+QIb^6Oo{gQ5?^m?nykLLz zs9(b-yPqAGq19D;NL0iBoTuAH`j~bjzsB|M8-aP;QsgAq98d+!F_mv zKD_WHB>2{Px?-*ULbG!eJGRgnHtbn+=DP1pC!zbQA7zrTx^rEAFe31a>L_~B zO|Nou71^}v&%8A4wWp2AMrYcgmD7A-6seNDvjbgmo2?seR%>&6#YEwM*5hnfwx0X# zY_sHMie&q+&5HAE`^4N>O#9GPA}y)^X+p^%VQvCeGrqRaP@S$Q>1$wP^gzIZ2fHQC z!e?X=O^CEK7Z~wRNG_$U@VtfD?YHX4zdmIB?ych0AL)x!yk33kOl#ze>u}pPcd9h&y z^)m(gS-TiWuF3i~Vm)=Y2Kk;;AgLO8@sDjEZ&8;5tPZ+^M{bui2(#Ka!`Xr9fP zkaW&bAuTbK_(=F4s{+Z@q$dH!QWk4$>V8o#%SP+6S4g+9L>q1+f-tQ!UUCT1Y-`@A zK`U${dToT5Nf`~I`f6K`xQ;r$i>p@__*mKP1ysAahYAMQ?A1#3Y))Jzh1GI z=y8L~V^7o`o?<@bo%(I6UMJaQ9Nj(v&!iZ3Q%`jFz|}b?WFgG)rkmax zl&GJmk+#5kM4wL<(vQz8yjk4)+1-7ED_s2~&oej@QC7HOQ=jaocrp2<$6!-eTEPRq z`UW?c7DrNqMEJw*!v!hE5?f8xjv?Xn+h?j*A|0VZd4E~^UA2O>Oj-O98R)eKjWXbk zGvI|X3&t!svk=TWL^I$8mhZyvoL``w%>rbhgtDgd+Vp3E9~&(#(W06;+@4}@U^f*u z@HL`TR}P|IUR-~IA-aFlvQv;4ihqbmsx-)+ z&e^rLe`=PB;L^SKkw1e7z*J?D=^qLwKZb5Cm%>x{FC5LpjeYEFKlyl)1Z=aUu@qPn zoKI|Bju4ZNy{(`7z~l-N>%JImdFKL>t5OU%QvcTg$$*{YGu@G_sn05Aep$Z9i`45a z6Is^S5X(OFq6DiXyIh(6wxiUAgS}r)iz6n$A!Yui#L4;Y*`IMe@PR)e0h*QrC{Uyvkb~ktd^w;4JFNE0D>?AOz%S*1CNvlndd?1zrV4&Hc6NTCD4VZs0?1SSJ01wyk2SDclfFCrj1h8fc z)9XrRCxgJ>fo}%^qoCiURmCKH@NY^zAmfnVGZZ&`c&X)qr8UF(;)Cq3@ delta 2749 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 diff --git a/p709_reset_han_ji_cells.py b/p709_reset_han_ji_cells.py index d3fa7c7..4ebe761 100644 --- a/p709_reset_han_ji_cells.py +++ b/p709_reset_han_ji_cells.py @@ -29,3 +29,5 @@ def reset_han_ji_cells(wb, sheet_name='漢字注音'): cell.color = None print("漢字儲存格已成功重置,文字顏色設為自動,填滿色彩設為無填滿。") + + return 0 \ No newline at end of file diff --git a/process_log.txt b/process_log.txt index 334aada..27a8669 100644 --- a/process_log.txt +++ b/process_log.txt @@ -32,3 +32,114 @@ pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, None, None, Non 2025-01-10 13:17:26,908 - INFO - 開始標音作業 - 河洛話: 白話音 2025-01-10 13:17:46,412 - INFO - 標音作業完成 - 河洛話: 白話音 2025-01-10 13:17:46,761 - INFO - 檔案已成功儲存 +2025-01-10 13:57:20,329 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 13:57:20,504 - INFO - 開始【漢字注音】工作表的清空、重置! +2025-01-10 13:57:26,854 - INFO - 【漢字注音】工作表的清空、重置失敗! +2025-01-10 13:57:26,854 - ERROR - 作業正常完成! +2025-01-10 13:59:14,756 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 13:59:14,892 - INFO - 開始【漢字注音】工作表的清空、重置! +2025-01-10 14:00:45,144 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:00:45,279 - INFO - 開始【漢字注音】工作表的清空、重置! +2025-01-10 14:01:02,787 - INFO - 完成【漢字注音】工作表的清空、重置! +2025-01-10 14:01:10,139 - INFO - 【漢字注音】工作表已清空、重置! +2025-01-10 14:01:35,427 - ERROR - 作業正常完成! +2025-01-10 14:25:19,037 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:25:19,128 - ERROR - 執行過程中發生未知錯誤: (-2147352567, '發生例外狀況。', (0, None, None, None, 0, -2146827284), None) +Traceback (most recent call last): + File "a700_重置漢字標音工作表.py", line 119, in main + result_code = process(wb) + File "a700_重置漢字標音工作表.py", line 63, in process + sheet.range(cells_range).clear_contents() # 清除 C3:R{end_of_row} 範圍的內容 + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\main.py", line 2048, in clear_contents + return self.impl.clear_contents() + ~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 1213, in clear_contents + self.xl.ClearContents() + ~~~~~~~~~~~~~~~~~~~~~^^ + File "c:\work\Piau-Im\.venv\Lib\site-packages\xlwings\_xlwindows.py", line 122, in __call__ + v = self.__method(*args, **kwargs) + File "", line 2, in ClearContents + File "c:\work\Piau-Im\.venv\Lib\site-packages\win32com\client\dynamic.py", line 355, in _ApplyTypes_ + result = self._oleobj_.InvokeTypes( + *(dispid, LCID, wFlags, retType, argTypes) + args + ) +pywintypes.com_error: (-2147352567, '發生例外狀況。', (0, None, None, None, 0, -2146827284), None) +2025-01-10 14:25:19,195 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 14:25:43,418 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:25:43,548 - INFO - 開始【漢字注音】工作表的清空、重置! +2025-01-10 14:26:04,791 - INFO - 完成【漢字注音】工作表的清空、重置! +2025-01-10 14:26:04,869 - INFO - 【漢字注音】工作表已清空、重置! +2025-01-10 14:26:04,929 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 14:26:04,929 - INFO - 作業成功完成! +2025-01-10 14:28:10,604 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:28:10,749 - INFO - 開始【漢字注音】工作表的清空、重置! +2025-01-10 14:28:23,303 - INFO - 完成【漢字注音】工作表的清空、重置! +2025-01-10 14:28:23,365 - INFO - 【漢字注音】工作表已清空、重置! +2025-01-10 14:28:23,423 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 14:28:23,423 - INFO - 作業成功完成! +2025-01-10 14:32:13,418 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:32:13,563 - INFO - 開始【漢字注音】工作表的清空、重置! +2025-01-10 14:32:19,974 - INFO - 完成【漢字注音】工作表的清空、重置! +2025-01-10 14:32:20,042 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 14:32:20,042 - INFO - 作業成功完成! +2025-01-10 14:32:59,851 - INFO - 作業開始 +2025-01-10 14:32:59,852 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:32:59,884 - WARNING - 【待注音漢字】儲存格為空 +2025-01-10 14:32:59,884 - ERROR - 作業正常完成! +2025-01-10 14:34:03,005 - INFO - 作業開始 +2025-01-10 14:34:03,006 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 14:34:03,039 - INFO - 【待注音漢字】總字數為: 143 +2025-01-10 14:34:03,172 - INFO - 儲存格清除完畢 +2025-01-10 14:34:10,047 - INFO - 儲存格格式重設完畢 +2025-01-10 14:34:22,636 - INFO - 填入待注音漢字完成 +2025-01-10 14:34:22,676 - INFO - 開始標音作業 - 河洛話: 白話音 +2025-01-10 14:34:36,680 - INFO - 標音作業完成 - 河洛話: 白話音 +2025-01-10 14:34:36,988 - INFO - 檔案已成功儲存 +2025-01-10 14:34:36,989 - ERROR - 作業正常完成! +2025-01-10 16:11:19,417 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:11:19,491 - INFO - 開始【處理作業】... +2025-01-10 16:11:19,492 - ERROR - 執行過程中發生未知錯誤: cannot access local variable 'end_of_file' where it is not associated with a value +Traceback (most recent call last): + File "a705_輸出己標音漢字.py", line 170, in main + result_code = process(wb) + File "a705_輸出己標音漢字.py", line 98, in process + if end_of_file: + ^^^^^^^^^^^ +UnboundLocalError: cannot access local variable 'end_of_file' where it is not associated with a value +2025-01-10 16:11:19,562 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 16:15:27,758 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:15:27,846 - INFO - 開始【處理作業】... +2025-01-10 16:15:30,051 - ERROR - 執行過程中發生未知錯誤: can only concatenate str (not "NoneType") to str +Traceback (most recent call last): + File "a705_輸出己標音漢字.py", line 170, in main + result_code = process(wb) + File "a705_輸出己標音漢字.py", line 114, in process + han_ji_text += cell_value +TypeError: can only concatenate str (not "NoneType") to str +2025-01-10 16:15:30,122 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 16:16:28,279 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:16:28,355 - INFO - 開始【處理作業】... +2025-01-10 16:19:25,587 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:19:25,699 - INFO - 開始【處理作業】... +2025-01-10 16:21:40,265 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:21:40,343 - INFO - 開始【處理作業】... +2025-01-10 16:22:58,939 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:22:59,025 - INFO - 開始【處理作業】... +2025-01-10 16:26:27,700 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:26:27,775 - INFO - 開始【處理作業】... +2025-01-10 16:27:25,352 - ERROR - 執行過程中發生未知錯誤: can only concatenate str (not "NoneType") to str +Traceback (most recent call last): + File "a705_輸出己標音漢字.py", line 173, in main + result_code = process(wb) + File "a705_輸出己標音漢字.py", line 115, in process + han_ji_text += cell_value +TypeError: can only concatenate str (not "NoneType") to str +2025-01-10 16:27:25,430 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 16:30:48,776 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:31:36,491 - INFO - 專案根目錄為: C:\work\Piau-Im +2025-01-10 16:31:36,565 - INFO - 開始【處理作業】... +2025-01-10 16:31:44,530 - INFO - 已成功將漢字輸出至檔案:tmp.txt +2025-01-10 16:31:44,537 - INFO - 完成【處理作業】... +2025-01-10 16:31:44,605 - INFO - 釋放 Excel 資源,處理完成。 +2025-01-10 16:31:44,605 - INFO - 作業成功完成! diff --git a/tmp.txt b/tmp.txt index 76a1da5..639c9e1 100644 --- a/tmp.txt +++ b/tmp.txt @@ -1,15 +1,7 @@ -觀自在菩薩,行深般若波羅蜜多時,照見五蘊皆空,度一切苦厄。 +尚有力量的每日祈禱文 -舍利子!色不異空,空不異色,色即是空,空即是色,受想行識,亦復如是。 +阮謙卑地敬仰、讚美、感謝、服從与愛全能的上帝,至高無上的上帝,上偉大的上帝,賜與純素世界、世界和平与阮靈魂的解脫。 -舍利子!是諸法空相,不生不滅,不垢不淨,不增不減。是故空中無色,無受想行識。無眼耳鼻舌身意;無色聲香味觸法。 +阮感謝、愛和讚美上帝唯一的子兒,伊是終極明師,賜與阮救贖。 -無眼界,乃至無意識界。無無明,亦無無明盡;乃至無老死,亦無老死盡。 - -無苦集滅道。無智,亦無得。以無所得故!菩提薩埵,依般若波羅蜜多故,心得罣礙,無罣礙故,無有恐怖,遠離顛倒、夢想,究竟湼槃。 - -三世諸佛,依般若波羅蜜多故,得阿耨多羅三藐三菩提! - -故知般若波羅蜜多,是大神咒,是大明咒,是無上咒,是無等等咒。能除一切苦!真實不虛! - -故說般若波羅蜜多咒,即說咒曰:揭諦,揭諦,波羅揭諦,波羅僧揭諦,菩提薩婆訶! \ No newline at end of file +阮遵循所有聖人与聖哲的教誨,阮感謝、愛与讚美伊,伊是上帝的代表,賜與阮靈性的提昇。 \ No newline at end of file