Нужно добавить данные в именованную таблицу Excel с помощью openpyxl - PullRequest
0 голосов
/ 29 января 2020

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

test = load_workbook(r'\\data4\users2\wyoung3\My Documents\Test.xlsx')
twb = test['Sheet2']
twbs = twb._tables
twbs = twbs.append(['s']) #this was my attempt to try and append an item to the bottom of the list
test.save(r'\\data4\users2\wyoung3\My Documents\Test.xlsx')

Это привело к открытию файла, который я не смог открыть, и к сообщению об ошибке:

AttributeError: у объекта 'list' нет атрибута 'tableColumns'

Может кто-нибудь посоветовать, как я могу go решить эту проблему?

1 Ответ

0 голосов
/ 30 января 2020

Вопрос, который вы задаете, не очень понятен, поэтому я предоставлю несколько вариантов. учебник для openpyxl на самом деле приличный, поэтому вы должны попробовать его пройти.

Сначала используйте Таблицы :

from openpyxl import Workbook
from openpyxl.worksheet.table import Table, TableStyleInfo

wb = Workbook()
ws = wb.active

data = [
    ['Apples', 10000, 5000, 8000, 6000],
    ['Pears',   2000, 3000, 4000, 5000],
    ['Bananas', 6000, 6000, 6500, 6000],
    ['Oranges',  500,  300,  200,  700],
]

# add column headings. NB. these must be strings
ws.append(["Fruit", "2011", "2012", "2013", "2014"])
for row in data:
    ws.append(row)

tab = Table(displayName="Table1", ref="A1:E5")

# Add a default style with striped rows and banded columns
style = TableStyleInfo(name="TableStyleMedium9", showFirstColumn=False,
                       showLastColumn=False, showRowStripes=True, showColumnStripes=True)
tab.tableStyleInfo = style
ws.add_table(tab)
wb.save("table.xlsx")

Кроме того, если вы уже знаете местоположение ячейки, вы можете просто insert_rows().

. По умолчанию используется одна строка или столбец. Например, чтобы вставить строку в 7 (перед существующей строкой 7):

ws.insert_rows(7)
...