Попытка создать несколько таблиц в Excel с помощью Python

#python #excel #openpyxl

Вопрос:

Я пытаюсь создавать таблицы в Excel с помощью библиотеки Openpyxl, но мне трудно понять, почему мой фрагмент кода нарушает правила.

 import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.table import Table, TableStyleInfo

def find_table(title, sheet_name, table_title):
    title_row = None
    global numCols
    for row in pws_sheet.iter_rows():
        if row[0].value == title: #Finds the title row
            title_row = row[0].row   1
        if row[0].value is None and title_row: #Checks if there is a blank row
            end_row = row[0].row - 1
            #Gets length of furthest column
            numCols = len([cell.value for cell in pws_sheet[title_row 1] if cell.value is not None])
            break
    else:
        # The last row in the sheet
        end_row = row[0].row

    TopLeft_Ref = "A"   str(title_row) #Example output A3
    BotRight_Ref = str(get_column_letter(numCols))   str(end_row) #Example output C18
    table_range = str(TopLeft_Ref   ":"   BotRight_Ref) #Example output A3:C18

    table = Table(displayName=table_title, ref=table_range
    pws_sheet.add_table(table)
 

Запуск этого как есть дает обратную связь. Я не знаю, как это исправить. Я перепробовал множество различных комбинаций своих переменных, но безуспешно. Комментирование и печать переменных дают то, что я ожидаю, но при создании таблицы возникают ошибки. Любая помощь будет признательна.

 Traceback (most recent call last):
  File "a:ScriptsExcel Conversion.py", line 319, in <module>
    print(find_table("All Call Distribution by Day", "All Calls by Day", "All_Calls_By_Day"))
  File "a:ScriptsExcel Conversion.py", line 310, in find_table
    table = Table(displayName=table_title, ref=table_range)
  File "A:Condalibsite-packagesopenpyxlworksheettable.py", line 271, in __init__
    self.ref = ref
  File "A:Condalibsite-packagesopenpyxldescriptorsexcel.py", line 103, in __set__
    super(CellRange, self).__set__(instance, value)
  File "A:Condalibsite-packagesopenpyxldescriptorsbase.py", line 253, in __set__
    raise ValueError('Value does not match pattern {0}'.format(self.pattern))
ValueError: Value does not match pattern ^[$]?([A-Za-z]{1,3})[$]?(d )(:[$]?([A-Za-z]{1,3})[$]?(d )?)?$|^[A-Za-z]{1,3}:[A-Za-z]{1,3}$
 

Комментарии:

1. Вам следует отладить свой код, чтобы точно увидеть, какое значение вы передаете. кстати. код мог бы быть намного проще.