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表格中将具有相同值的多个单元格与一个单元格合并以求平均值

如何使用`openpyxl`库在Excel中的合并单元格中写入?

根据比较将单元格与数组和打印行进行比较

如何使用 Google 表格中的格式水平合并单元格/列?

将大写单元格与小写单元格分开排序