Openpyxl:将单元格与 x y 合并。如何将 id 转换为 Excel 列字母?
Posted
技术标签:
【中文标题】Openpyxl:将单元格与 x y 合并。如何将 id 转换为 Excel 列字母?【英文标题】:Openpyxl: Merge cells with x y. How to transform id to Excel columns letters? 【发布时间】:2022-01-19 13:34:06 【问题描述】:我正在使用openpyxl
,我需要以动态方式合并单元格,所以这是我的困难。
这是将单元格与openpyxl
合并的代码:
wb = Workbook()
sheet = wb. active.
sheet. merge_cells('A1:B2')
因为我需要在 for 循环中动态执行,所以我需要将 [(1,1),(2,2)]
转换为 A1:B2
,更准确地说:1 -> A, 2 -> B, 705 -> AAC
def get_idx_of_letter_in_alphabet(letter):
""" B -> 1 """
return "abcdefghijklmnopqrstuvwxyz".index(letter.lower())
def get_idx_from_col_letters(letters):
""" AB -> """
idx = 0
for i,l in enumerate(letters):
print("letter:",l,"id",len(letters)-i-1, "adding",(get_idx_of_letter_in_alphabet(l) + 1) * pow(26, len(letters)-i-1))
idx += (get_idx_of_letter_in_alphabet(l) + 1) * pow(26, len(letters)-i-1) #xlsx column A begin with 1, not 0
return idx
def idx_to_letter(i):
"""1 <= i <= 26"""
return "abcdefghijklmnopqrstuvwxyz"[i-1]
def get_letters_from_idx(i):
""" TO DO !!! """
if i == 3: return "C"
elif i == 174: return "FR"
elif i == 175: return "FS"
elif i == 705: return "AAC"
return "AAAAAA"
print(get_idx_of_letter_in_alphabet("C"))
print(get_idx_from_col_letters("FR"))
print(idx_to_letter(3))
print(get_letters_from_idx(205))
【问题讨论】:
【参考方案1】:抱歉,打扰了我刚刚找到答案。
ws.merge_cells(start_row=1, start_column=1, end_row=2, end_column=4)
SO solution
算法仍然是一个有趣的问题思考:)
【讨论】:
以上是关于Openpyxl:将单元格与 x y 合并。如何将 id 转换为 Excel 列字母?的主要内容,如果未能解决你的问题,请参考以下文章
在Google表格中将具有相同值的多个单元格与一个单元格合并以求平均值