Создать таблицу в Excel - Python openpyxl - PullRequest
0 голосов
/ 28 января 2020

Есть ли способ создать таблицу на основе всех строк и столбцов, содержащих данные? Обычно таблица создается путем помещения фиксированной ссылки (например: ref = "A1: E5") ). Мне нужен скрипт, чтобы найти последнюю строку на листе и использовать ее в качестве ссылки. Это потому, что лист, который мне нужно редактировать, содержит разное количество строк каждый раз, и если я установлю фиксированную ссылку, он будет включать в себя пустые строки в таблице.

Если у вас есть это как макрос в Excel, но вы хотите конвертировать это python с openpyxl

Макрос Excel

Sub A2_SelectAllMakeTable()
lrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
lCol = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
ActiveSheet.ListObjects.Add(xlSrcRange, Range(Cells(1, 1), Cells(lrow, lCol)), ,        xlYes).Name = "Masterdata"
End Sub

python начало кода:

from openpyxl import load_workbook
wb = load_workbook('export1.XLSX')
ws1 = wb["Sheet1"]
ws1.title = "Masterdata"

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы можете использовать get_column_letter, max_column и max_row на рабочем листе sheet, например:

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

table = Table(displayName="Table1", ref="A1:" + get_column_letter(sheet.max_column) + str(sheet.max_row))

sheet.add_table(table)
0 голосов
/ 28 января 2020

Вы можете создать таблицу следующим образом -

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
ws1.add_table(tab)

Пример из официального Do c - https://openpyxl.readthedocs.io/en/stable/worksheet_tables.html

...