Skip to content

Commit

Permalink
新增工具
Browse files Browse the repository at this point in the history
  • Loading branch information
AlanJui committed Oct 6, 2024
1 parent 88a3a20 commit 6c9a6c0
Show file tree
Hide file tree
Showing 36 changed files with 1,777 additions and 487 deletions.
7 changes: 7 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@
"program": "a702_Batch_Zu_Tong_Piau_Zu_Im.py",
"console": "integratedTerminal",
},
{
"name": "a703_Zu_Tong_Piau_Zu_Im",
"type": "debugpy",
"request": "launch",
"program": "a703_Zu_Tong_Piau_Zu_Im.py",
"console": "integratedTerminal",
},
{
"name": "p711_TL_Tng_Zu_Im",
"type": "debugpy",
Expand Down
Binary file modified Tai_Gi_Zu_Im_Bun.xlsx
Binary file not shown.
Binary file modified Tai_Loo_Han_Ji_Khoo.db
Binary file not shown.
69 changes: 69 additions & 0 deletions a701-v1_作業中活頁檔填入漢字_BAK.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import getopt
import os
import sys
from pathlib import Path

import xlwings as xw

from p710_thiam_han_ji import fill_hanji_in_cells

# =========================================================================
# (1) 取得專案根目錄。
# =========================================================================
# 獲取當前檔案的路徑
current_file_path = Path(__file__).resolve()

# 專案根目錄
project_root = current_file_path.parent

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.range('D3:R166').clear_contents() # 清除 C3:R166 範圍的內容

# 將待注音的漢字填入
fill_hanji_in_cells(wb)

# 將檔案存放路徑設為【專案根目錄】之下
file_name = "Tai_Gi_Zu_Im_Bun.xlsx"
try:
file_name = str(wb.names['TITLE'].refers_to_range.value).strip()
except KeyError:
# print("未找到命名範圍 'TITLE',使用預設名稱")
# file_name = "default_file_name.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)

# 關閉工作簿
wb.close()

print(f"檔案已成功存為 {new_file_path}")
79 changes: 36 additions & 43 deletions a701_作業中活頁檔填入漢字.py
Original file line number Diff line number Diff line change
@@ -1,69 +1,62 @@
import getopt
import os
import sys
from pathlib import Path

import xlwings as xw

from p710_thiam_han_ji import fill_hanji_in_cells
# 指定虛擬環境的 Python 路徑
venv_python = os.path.join(".venv", "Scripts", "python.exe") if sys.platform == "win32" else os.path.join(".venv", "bin", "python")

# =========================================================================
# (1) 取得專案根目錄。
# =========================================================================
# 獲取當前檔案的路徑
current_file_path = Path(__file__).resolve()

# 專案根目錄
project_root = current_file_path.parent

print(f"專案根目錄為: {project_root}")

# =========================================================================
# (2) 若無指定輸入檔案,則獲取當前作用中的 Excel 檔案並另存新檔。
# =========================================================================
wb = None
# (0) 取得專案根目錄。
# 使用已打開且處於作用中的 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)
# 獲取活頁簿的完整檔案路徑
file_path = wb.fullname
print(f"完整檔案路徑: {file_path}")

# 清空儲存格內容
sheet = wb.sheets['漢字注音']
sheet.range('D3:R166').clear_contents() # 清除 C3:R166 範圍的內容
# 獲取活頁簿的檔案名稱(不包括路徑)
file_name = wb.name
print(f"檔案名稱: {file_name}")

# 將待注音的漢字填入
fill_hanji_in_cells(wb)
# 獲取當前檔案的路徑
current_file_path = Path(file_path).resolve()

# 將檔案存放路徑設為【專案根目錄】之下
file_name = "Tai_Gi_Zu_Im_Bun.xlsx"
try:
file_name = str(wb.names['TITLE'].refers_to_range.value).strip()
except KeyError:
# print("未找到命名範圍 'TITLE',使用預設名稱")
# file_name = "default_file_name.xlsx" # 提供一個預設檔案名稱
setting_sheet = wb.sheets["env"]
file_name = str(
setting_sheet.range("C4").value
).strip()
# 專案根目錄
working_dir_path = current_file_path.parent
print(f"專案根目錄為: {working_dir_path}")

# (1) 存成作業暫存檔
new_file_name = "working"

# 設定檔案輸出路徑,存於專案根目錄下的 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")
working_dir_path,
f"【河洛話注音】{new_file_name}.xlsx")

# 儲存新建立的工作簿
wb.save(new_file_path)
print(f"作業中暫存檔名: {wb.name}")

# (2) 將儲存格內的舊資料清除
sheet = wb.sheets['漢字注音'] # 選擇工作表
sheet.activate() # 將「漢字注音」工作表設為作用中工作表
sheet.range('A1').select() # 將 A1 儲存格設為作用儲存格
sheet.range('D3:R166').clear_contents() # 清除 C3:R166 範圍的內容

# 獲取 V3 儲存格的合併範圍
merged_range = sheet.range('V3').merge_area
# 清空合併儲存格的內容
merged_range.clear_contents()

# 關閉工作簿
wb.close()
# 顯示「已輸入之拼音字母及注音符號」
named_range = wb.names['顯示注音輸入'] # 選擇名為 "顯示注音輸入" 的命名範圍# 選擇名為 "顯示注音輸入" 的命名範圍
named_range.refers_to_range.value = True

print(f"檔案已成功存為 {new_file_path}")
# 設定 V3 儲存格為作用儲存格
sheet.range('V3').select()
25 changes: 12 additions & 13 deletions a702_Batch_Zu_Tong_Piau_Zu_Im.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import os
import subprocess
import sys

import xlwings as xw
Expand All @@ -16,18 +15,18 @@

# 所有檔案名稱
files = [
# "【河洛話注音】金剛般若波羅蜜經001。法會因由分第一.xlsx",
# "【河洛話注音】金剛般若波羅蜜經002。善現啟請分第二.xlsx",
# "【河洛話注音】金剛般若波羅蜜經003。大乘正宗分第三.xlsx",
# "【河洛話注音】金剛般若波羅蜜經004。妙行無住分第四.xlsx",
# "【河洛話注音】金剛般若波羅蜜經005。如理實見分第五.xlsx",
# "【河洛話注音】金剛般若波羅蜜經006。正信希有分第六.xlsx",
# "【河洛話注音】金剛般若波羅蜜經007。無得無說分第七.xlsx",
# "【河洛話注音】金剛般若波羅蜜經008。依法出生分第八.xlsx",
# "【河洛話注音】金剛般若波羅蜜經009。一相無相分第九.xlsx",
# "【河洛話注音】金剛般若波羅蜜經010。莊嚴淨土分第十.xlsx",
# "【河洛話注音】金剛般若波羅蜜經011。無為福勝分第十一.xlsx",
# "【河洛話注音】金剛般若波羅蜜經012。尊重正教分第十二.xlsx",
"【河洛話注音】金剛般若波羅蜜經001。法會因由分第一.xlsx",
"【河洛話注音】金剛般若波羅蜜經002。善現啟請分第二.xlsx",
"【河洛話注音】金剛般若波羅蜜經003。大乘正宗分第三.xlsx",
"【河洛話注音】金剛般若波羅蜜經004。妙行無住分第四.xlsx",
"【河洛話注音】金剛般若波羅蜜經005。如理實見分第五.xlsx",
"【河洛話注音】金剛般若波羅蜜經006。正信希有分第六.xlsx",
"【河洛話注音】金剛般若波羅蜜經007。無得無說分第七.xlsx",
"【河洛話注音】金剛般若波羅蜜經008。依法出生分第八.xlsx",
"【河洛話注音】金剛般若波羅蜜經009。一相無相分第九.xlsx",
"【河洛話注音】金剛般若波羅蜜經010。莊嚴淨土分第十.xlsx",
"【河洛話注音】金剛般若波羅蜜經011。無為福勝分第十一.xlsx",
"【河洛話注音】金剛般若波羅蜜經012。尊重正教分第十二.xlsx",
"【河洛話注音】金剛般若波羅蜜經013。如法受持分第十三.xlsx"
]

Expand Down
71 changes: 57 additions & 14 deletions a703_Zu_Tong_Piau_Zu_Im.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,70 @@
# =========================================================================
# 當 Tai_Gi_Zu_Im_Bun.xlsx 檔案已完成人工手動注音後,執行此程式可完成以下工作:
# (1) A730: 將人工填入之拼音及注音,抄寫到漢字的上方(拼音)及下方(注音)。
# (2) A740: 將【漢字注音】工作表的內容,轉成 HTML 網頁檔案。
# (3) A750: 將 Tai_Gi_Zu_Im_Bun.xlsx 檔案,依 env 工作表的設定,另存新檔到指定目錄。
# =========================================================================
import os
import subprocess
import sys

import xlwings as xw

from p702_Ca_Han_Ji_Thak_Im import ca_han_ji_thak_im
from p710_thiam_han_ji import fill_hanji_in_cells
from p730_Tng_Sing_Bang_Iah import tng_sing_bang_iah

# 指定虛擬環境的 Python 路徑
venv_python = os.path.join(".venv", "Scripts", "python.exe") if sys.platform == "win32" else os.path.join(".venv", "bin", "python")

# 依次執行三個 Python 檔案
# (0) 取得專案根目錄。
# 使用已打開且處於作用中的 Excel 工作簿
try:
wb = xw.apps.active.books.active
except Exception as e:
print(f"發生錯誤: {e}")
print("無法找到作用中的 Excel 工作簿")
sys.exit(2)

# 獲取活頁簿的完整檔案路徑
file_path = wb.fullname
print(f"完整檔案路徑: {file_path}")

# 獲取活頁簿的檔案名稱(不包括路徑)
file_name = wb.name
print(f"檔案名稱: {file_name}")

# 顯示「已輸入之拼音字母及注音符號」
named_range = wb.names['顯示注音輸入'] # 選擇名為 "顯示注音輸入" 的命名範圍# 選擇名為 "顯示注音輸入" 的命名範圍
named_range.refers_to_range.value = True

# (1) A720: 將 V3 儲存格內的漢字,填入標音用方格。
subprocess.run([venv_python, "a720_待注音漢字填入標音用方格.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])
# (1) A720: 將 V3 儲存格內的漢字,逐個填入標音用方格。
sheet = wb.sheets['漢字注音'] # 選擇工作表
sheet.activate() # 將「漢字注音」工作表設為作用中工作表
sheet.range('A1').select() # 將 A1 儲存格設為作用儲存格
# sheet.range('D3:R166').clear_contents() # 清除 C3:R166 範圍的內容

# fill_hanji_in_cells(wb) # 將漢字逐個填入各儲存格

# (2) A731: 自動為漢字查找讀音,並抄寫到漢字的上方(拼音)及下方(注音)。
subprocess.run([venv_python, "a731_自動為漢字查注音.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])
ca_han_ji_thak_im(wb, '漢字注音', 'V3')

# (3) A740: 將【漢字注音】工作表的內容,轉成 HTML 網頁檔案。
subprocess.run([venv_python, "a740_漢字注音轉網頁.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])
tng_sing_bang_iah(wb, '漢字注音', 'V3')

# (4) A750: 將 Tai_Gi_Zu_Im_Bun.xlsx 檔案,依 env 工作表的設定,另存新檔到指定目錄。
# subprocess.run([venv_python, "a750_漢字注音存檔.py"])
subprocess.run([venv_python, "a750_漢字注音存檔.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])
try:
file_name = str(wb.names['TITLE'].refers_to_range.value).strip()
except KeyError:
# print("未找到命名範圍 'TITLE',使用預設名稱")
# file_name = "default_file_name.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)

# 保存 Excel 檔案
# wb.close()

27 changes: 27 additions & 0 deletions a704_Zu_Tong_Piau_Zu_Im_舊版.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# =========================================================================
# 當 Tai_Gi_Zu_Im_Bun.xlsx 檔案已完成人工手動注音後,執行此程式可完成以下工作:
# (1) A730: 將人工填入之拼音及注音,抄寫到漢字的上方(拼音)及下方(注音)。
# (2) A740: 將【漢字注音】工作表的內容,轉成 HTML 網頁檔案。
# (3) A750: 將 Tai_Gi_Zu_Im_Bun.xlsx 檔案,依 env 工作表的設定,另存新檔到指定目錄。
# =========================================================================
import os
import subprocess
import sys

# 指定虛擬環境的 Python 路徑
venv_python = os.path.join(".venv", "Scripts", "python.exe") if sys.platform == "win32" else os.path.join(".venv", "bin", "python")

# 依次執行三個 Python 檔案

# (1) A720: 將 V3 儲存格內的漢字,填入標音用方格。
subprocess.run([venv_python, "a720_待注音漢字填入標音用方格.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])

# (2) A731: 自動為漢字查找讀音,並抄寫到漢字的上方(拼音)及下方(注音)。
subprocess.run([venv_python, "a731_自動為漢字查注音.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])

# (3) A740: 將【漢字注音】工作表的內容,轉成 HTML 網頁檔案。
subprocess.run([venv_python, "a740_漢字注音轉網頁.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])

# (4) A750: 將 Tai_Gi_Zu_Im_Bun.xlsx 檔案,依 env 工作表的設定,另存新檔到指定目錄。
# subprocess.run([venv_python, "a750_漢字注音存檔.py"])
subprocess.run([venv_python, "a750_漢字注音存檔.py", "-i", "Tai_Gi_Zu_Im_Bun.xlsx"])
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
<ruby><rb></rb><rt>uan5</rt><rtc>ㄨㄢˊ</rtc></ruby>
<span></span>
<ruby><rb></rb><rt>u2</rt><rtc>ㄨˋ</rtc></ruby>
<ruby><rb></rb><rt>tua7</rt><rtc>ㄉㄨㄚ˫</rtc></ruby>
<ruby><rb></rb><rt>tai7</rt><rtc>ㄉㄞ˫</rtc></ruby>
<ruby><rb></rb><rt>pi2</rt><rtc>ㄅㄧˋ</rtc></ruby>
<ruby><rb></rb><rt>khiu1</rt><rtc>ㄎㄧㄨˉ</rtc></ruby>
<ruby><rb></rb><rt>ziong3</rt><rtc>ㄐㄧㆲ˪</rtc></ruby>
Expand All @@ -78,13 +78,13 @@
<span></span>
<ruby><rb></rb><rt>tiok8</rt><rtc>ㄉㄧㆦㆻ˙</rtc></ruby>
<ruby><rb></rb><rt>i1</rt><rtc>ㄧˉ</rtc></ruby>
<ruby><rb></rb><rt>ti5</rt><rtc>ㄉㄧˊ</rtc></ruby>
<ruby><rb></rb><rt>ci5</rt><rtc>ㄑㄧˊ</rtc></ruby>
<ruby><rb></rb><rt>puat4</rt><rtc>ㄅㄨㄚㆵ</rtc></ruby>
<span></span>
<ruby><rb></rb><rt>jip8</rt><rtc>ㆢ一ㆴ˙</rtc></ruby>
<ruby><rb></rb><rt>sia2</rt><rtc>ㄒㄧㄚˋ</rtc></ruby>
<ruby><rb></rb><rt>ue7</rt><rtc>ㄨㆤ˫</rtc></ruby>
<ruby><rb></rb><rt>tua7</rt><rtc>ㄉㄨㄚ˫</rtc></ruby>
<ruby><rb></rb><rt>tai7</rt><rtc>ㄉㄞ˫</rtc></ruby>
<ruby><rb></rb><rt>siann5</rt><rtc>ㄒㄧㆩˊ</rtc></ruby>
<ruby><rb></rb><rt>khit4</rt><rtc>ㄎㄧㆵ</rtc></ruby>
<ruby><rb></rb><rt>sit8</rt><rtc>ㄒㄧㆵ˙</rtc></ruby>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<ruby><rb></rb><rt>phoo5</rt><rtc>ㄆㆦˊ</rtc></ruby>
<ruby><rb></rb><rt>the5</rt><rtc>ㄊㆤˊ</rtc></ruby>
<ruby><rb></rb><rt>zai6</rt><rtc>ㄗㄞˋ</rtc></ruby>
<ruby><rb></rb><rt>tua7</rt><rtc>ㄉㄨㄚ˫</rtc></ruby>
<ruby><rb></rb><rt>tai7</rt><rtc>ㄉㄞ˫</rtc></ruby>
<ruby><rb></rb><rt>ziong3</rt><rtc>ㄐㄧㆲ˪</rtc></ruby>
<ruby><rb></rb><rt>tiong1</rt><rtc>ㄉㄧㆲˉ</rtc></ruby>
<span></span>
Expand All @@ -56,7 +56,7 @@
<ruby><rb></rb><rt>king3</rt><rtc>ㄍㄧㄥ˪</rtc></ruby>
<span></span>
<ruby><rb></rb><rt>ji5</rt><rtc>ㆢㄧˊ</rtc></ruby>
<ruby><rb></rb><rt>piat8</rt><rtc>ㄅㄧㄚㆵ˙</rtc></ruby>
<ruby><rb></rb><rt>pik8</rt><rtc>ㄅㄧㆻ˙</rtc></ruby>
<ruby><rb></rb><rt>hut8</rt><rtc>ㄏㄨㆵ˙</rtc></ruby>
<ruby><rb></rb><rt>gian5</rt><rtc>ㆣㄧㄢˊ</rtc></ruby>
<span></span>
Expand Down
Loading

0 comments on commit 6c9a6c0

Please sign in to comment.