Files
Agent 836ad20515 v1.1.0: 增加交互提示、路径输入、窗口属性配置
- main.py: 增加show_banner()启动说明、各阶段[INFO]日志、结果摘要、任意键退出
- file_selector.py: 重写为路径输入→验证→空输入弹窗回退→不存在循环重试
- run.bat: 新建启动脚本(chcp 65001, mode con cols=80 lines=20, color 0B, title固定署名, pause)
- Code/docs/modification-assessment.md: 修改需求评估文档
2026-05-25 17:29:19 +08:00

52 lines
1.3 KiB
Python

"""Column coordinate conversion utilities."""
def col_to_letter(col: int) -> str:
"""Convert 0-based column index to Excel letter.
0 → A, 1 → B, ..., 25 → Z, 26 → AA, 27 → AB, ...
"""
result = ''
col += 1
while col > 0:
col -= 1
result = chr(col % 26 + ord('A')) + result
col //= 26
return result
def letter_to_col(letter: str) -> int:
"""Convert Excel column letter to 0-based index.
A → 0, B → 1, ..., Z → 25, AA → 26, ...
"""
result = 0
for ch in letter.upper():
result = result * 26 + (ord(ch) - ord('A') + 1)
return result - 1
def cell_ref_to_rc(ref: str) -> tuple[int, int]:
"""Convert Excel cell reference (e.g. 'A1', 'BC42') to (row, col).
Returns 0-based (row, col).
"""
col_letters = []
row_digits = []
for ch in ref:
if ch.isalpha():
col_letters.append(ch)
else:
row_digits.append(ch)
col = letter_to_col(''.join(col_letters))
row = int(''.join(row_digits)) - 1 # 1-based → 0-based
return row, col
def rc_to_cell_ref(row: int, col: int) -> str:
"""Convert 0-based (row, col) to Excel cell reference.
(0, 0) → 'A1', (1, 2) → 'C2', ...
"""
return col_to_letter(col) + str(row + 1)