使 Excel 单元格中的某些字符成为下标 Python

Make certain characters in an Excel cell subscript Python

我正在尝试编写一个 Python 脚本,它获取 Excel 电子表格单元格中的文本,并使某些字符成为下标或上标。我使用的是 OpenPyxl,但我读到它不允许修改小于整个单元格的内容,因此我愿意在必要时使用不同的包。

作为参考,我需要每个单元格中“T”后的 2 个字符作为下标。因此,将字符串“T12+0.10”或“<(T12+17.00”格式化,使“12”成为下标,如下图所示。

这是我目前的情况:

style = XFStyle()
style.font = fnt
style.borders = borders
substyle = fnt.ESCAPEMENT_SUBSCRIPT
superstyle = fnt.ESCAPEMENT_SUPERSCRIPT


def compare(contents):
    s = ""
    for i in contents:
        nextchar=contents[i+1].value
        if i.value.contains ("T"):
            j = i + 1, substyle
            s += str(s + j)
        else:
            s += str(i)

wb = op.load_workbook("file_name.xlsx")
ws = wb["Sheet3"]
for row in ws.iter_rows("C{}:C{}".format(ws.min_row, ws.max_row)):
    for cell in row:
        contents = cell.value
        compare(contents)

使用 Xlwings,您可以这样做,假设单元格内容中有 'T' 的地方接下来的两个字符是下标的。

import xlwings as xw

wb = xw.Book('Book1.xlsx)
ws = wb.sheets('Sheet1')
for x in range(1, 6): 
    contents = ws.range(1, x).value 
    if 'T' in contents: # Checks for T in the cell contents
        i = contents.index('T')+1
        ws.range(1, x).characters[i:i+2].api.Font.Subscript = True

wb.save()
wb.close()

例如,这会将以下单元格从

更改为 A1:E1
T12+0.10    <(T12+17.00 A12+1.11    A+0.10T12   B14+111