Как создать таблицу в питоне
Перейти к содержимому

Как создать таблицу в питоне

  • автор:

Как создать таблицу с помощью Matplotlib

Как создать таблицу с помощью Matplotlib

Вы можете использовать один из двух следующих методов для создания таблиц в Python с помощью Matplotlib:

Способ 1: создать таблицу из pandas DataFrame

#create pandas DataFrame df = pd.DataFrame(np.random.randn (20, 2), columns=['First', 'Second']) #create table table = ax.table (cellText=df.values , colLabels=df.columns , loc='center') 

Способ 2: создать таблицу из пользовательских значений

#create values for table table_data=[ ["Player 1", 30], ["Player 2", 20], ["Player 3", 33], ["Player 4", 25], ["Player 5", 12] ] #create table table = ax.table (cellText=table_data, loc='center') 

В этом руководстве приведены примеры того, как использовать эти методы на практике.

Пример 1: Создать таблицу из pandas DataFrame

В следующем коде показано, как создать таблицу в Matplotlib, содержащую значения в кадре данных pandas:

import numpy as np import pandas as pd import matplotlib.pyplot as plt #make this example reproducible np.random.seed (0) #define figure and axes fig, ax = plt.subplots() #hide the axes fig.patch.set_visible (False) ax.axis('off') ax.axis('tight') #create data df = pd.DataFrame(np.random.randn (20, 2), columns=['First', 'Second']) #create table table = ax.table (cellText=df.values, colLabels=df.columns, loc='center') #display table fig. tight_layout () plt.show() 

Таблица Matplotlib

Пример 2. Создание таблицы из пользовательских значений

Следующий код показывает, как создать таблицу в Matplotlib, содержащую пользовательские значения:

import numpy as np import pandas as pd import matplotlib.pyplot as plt #define figure and axes fig, ax = plt.subplots() #create values for table table_data=[ ["Player 1", 30], ["Player 2", 20], ["Player 3", 33], ["Player 4", 25], ["Player 5", 12] ] #create table table = ax.table(cellText=table_data, loc='center') #modify table table.set_fontsize (14) table. scale (1,4) ax.axis('off') #display table plt.show() 

таблица matplotlib с пользовательскими значениями

Обратите внимание, что table.scale(width, length) изменяет ширину и длину таблицы. Например, мы могли бы сделать таблицу еще длиннее, изменив длину:

table. scale (1,10) 

Создайте таблицу в документах Word с помощью Python

создавать таблицы в документах Word с помощью python

Таблицы обычно используются в документах Word для организации информации в виде сетки. Они позволяют суммировать информацию в виде строк и столбцов. В этой статье вы узнаете, как программно создать таблицу в документах Word с помощью Python. Кроме того, в статье будет рассказано, как создавать вложенные таблицы или клонировать существующую таблицу в документах Word.

  • Библиотека Python для создания таблиц в документах Word
  • Создать таблицу в документе Word
  • Создание вложенной таблицы в документе Word
  • Клонировать существующую таблицу в документе Word

Библиотека Python для создания таблиц в документах Word#

Для работы с таблицами в документах Word мы будем использовать Aspose.Words for Python. Библиотека предназначена для динамического создания документов Word и управления ими из приложений Python. Вы можете установить библиотеку из PyPI с помощью следующей команды pip.

pip install aspose-words 

Создайте таблицу в документе Word на Python#

Ниже приведены шаги по созданию таблицы в документе Word DOCX с использованием Python.

  • Создайте объект класса Document.
  • Создайте объект класса DocumentBuilder.
  • Запустите таблицу с помощью метода DocumentBuilder.starttable() и получите ссылку на таблицу в объекте.
  • Вставьте ячейку с помощью метода DocumentBuilder.insertcell().
  • Задайте форматирование ячейки с помощью свойства DocumentBuilder.cellformat.
  • Установите автоподгонку с помощью метода autofit(aw.tables.AutoFitBehavior.FIXEDCOLUMNWIDTHS).
  • Установить выравнивание ячейки.
  • Вставьте текст в ячейку, используя метод DocumentBuilder.write().
  • При необходимости повторите вставку ячеек и текста в ячейки.
  • Завершите строку после завершения вставки ячеек.
  • Завершите таблицу, когда вы вставите все строки.
  • Сохраните документ Word, используя метод Document.save().

В следующем примере кода показано, как создать таблицу в документах DOCX с помощью Python.

import aspose.words as aw # Create a new Word document. doc = aw.Document() # Create document builder. builder = aw.DocumentBuilder(doc) # Start the table. table = builder.start_table() # Insert cell. builder.insert_cell() # Table wide formatting must be applied after at least one row is present in the table. table.left_indent = 20.0 # Set height and define the height rule for the header row. builder.row_format.height = 40.0 builder.row_format.height_rule = aw.HeightRule.AT_LEAST # Set alignment and font settings. builder.paragraph_format.alignment = aw.ParagraphAlignment.CENTER builder.font.size = 16 builder.font.name = "Arial" builder.font.bold = True builder.cell_format.width = 100.0 builder.write("Header Row,\n Cell 1") # We don't need to specify this cell's width because it's inherited from the previous cell. builder.insert_cell() builder.write("Header Row,\n Cell 2") builder.insert_cell() builder.cell_format.width = 200.0 builder.write("Header Row,\n Cell 3") builder.end_row() builder.cell_format.width = 100.0 builder.cell_format.vertical_alignment = aw.tables.CellVerticalAlignment.CENTER # Reset height and define a different height rule for table body. builder.row_format.height = 30.0 builder.row_format.height_rule = aw.HeightRule.AUTO builder.insert_cell() # Reset font formatting. builder.font.size = 12 builder.font.bold = False builder.write("Row 1, Cell 1 Content") builder.insert_cell() builder.write("Row 1, Cell 2 Content") builder.insert_cell() builder.cell_format.width = 200.0 builder.write("Row 1, Cell 3 Content") builder.end_row() builder.insert_cell() builder.cell_format.width = 100.0 builder.write("Row 2, Cell 1 Content") builder.insert_cell() builder.write("Row 2, Cell 2 Content") builder.insert_cell() builder.cell_format.width = 200.0 builder.write("Row 2, Cell 3 Content.") builder.end_row() # End table. builder.end_table() # Save the document. doc.save("table_formatted.docx") 

Ниже приведен скриншот таблицы, которую мы создали с помощью приведенного выше примера кода.

Table in a Word DOCX Document

Создайте вложенную таблицу в документе Word на Python#

Aspose.Words for Python также позволяет легко создавать вложенные таблицы. Другими словами, вы можете создать новую таблицу в ячейке таблицы. Ниже приведены шаги для создания вложенной таблицы в файле Word DOCX.

  • Создайте объект класса Document.
  • Создайте объект класса DocumentBuilder.
  • Запустите таблицу с помощью метода DocumentBuilder.starttable() и получите ссылку на таблицу в объекте.
  • Вставьте ячейку с помощью метода DocumentBuilder.insertcell() и получите ссылку на ячейку в объекте.
  • Вставьте текст в ячейку, используя метод DocumentBuilder.write().
  • При необходимости повторите вставку ячеек и текста в ячейки.
  • Завершите таблицу, когда вы вставите все строки.
  • Переместите элемент управления внутрь нужной ячейки с помощью метода DocumentBuilder.moveto(Cell.firstparagraph).
  • Создайте другую таблицу, вставив ячейки и завершив таблицу, когда закончите.
  • Сохраните документ Word, используя метод Document.save().

В следующем примере кода показано, как создать вложенную таблицу в документе DOCX с помощью Python.

import aspose.words as aw # Create a new Word document. doc = aw.Document() builder = aw.DocumentBuilder(doc) # Insert cell. cell = builder.insert_cell() builder.writeln("Outer Table Cell 1") builder.insert_cell() builder.writeln("Outer Table Cell 2") # This call is important to create a nested table within the first table. # Without this call, the cells inserted below will be appended to the outer table. builder.end_table() # Move to the first cell of the outer table. builder.move_to(cell.first_paragraph) # Build the inner table. builder.insert_cell() builder.writeln("Inner Table Cell 1") builder.insert_cell() builder.writeln("Inner Table Cell 2") builder.end_table() # Save the document. doc.save("table_nested.docx") 

Ниже приведен вывод приведенного выше примера кода.

Nested Table in a Word Document

Клонировать существующую таблицу в документе Word в Python#

Вы также можете клонировать существующую таблицу в документе Word. Ниже приведены шаги для выполнения этой операции.

  • Загрузите документ, используя класс Document.
  • Получить ссылку на таблицу в объекте с помощью метода Document.getchild(NodeType.TABLE, int, boolean).astable().
  • Вызовите метод clone(True).astable(), используя объект таблицы, и получите ссылку на клонированную таблицу в другом объекте.
  • Вставьте клонированную таблицу, используя метод Table.parentnode.insertafter().
  • Вставьте пустой абзац между таблицами, используя метод Table.parentnode.insertafter(Paragraph(Document), Table).
  • Сохраните документ Word, используя метод Document.save().

В следующем примере кода показано, как клонировать таблицу в документе Word DOCX с помощью Python.

import aspose.words as aw # Load the Word document. doc = aw.Document("table_formatted.docx") # Get reference of the desired table. table = doc.get_child(aw.NodeType.TABLE, 0, True).as_table() # Clone the table and insert it into the document after the original table. tableClone = table.clone(True).as_table() table.parent_node.insert_after(tableClone, table) # Insert an empty paragraph between the two tables, # or else they will be combined into one upon saving. table.parent_node.insert_after(aw.Paragraph(doc), table) # Save the document. doc.save("table_clone.docx") 

На следующем снимке экрана показана клонированная таблица в документе Word.

Cloned Table in a Word Document

Получите бесплатную лицензию API#

Вы можете получить временную лицензию на использование Aspose.Words for Python без ограничений на пробную версию.

Вывод#

В этой статье вы узнали, как создавать таблицы в документах Word с помощью Python. Кроме того, вы видели, как динамически создавать вложенные таблицы или клонировать существующие таблицы в документах Word. Кроме того, вы можете посетить документацию Aspose.Words for Python, чтобы изучить другие функции. В случае возникновения каких-либо вопросов, не стесняйтесь, дайте нам знать через наш форум.

Смотрите также#

  • Создавайте документы MS Word с помощью Python
  • Преобразование документа Word в HTML с помощью Python
  • Преобразование документов Word в PNG, JPEG или BMP в Python
  • Документы Word в Markdown с использованием Python
  • Сравните два документа Word в Python

Информация: Если вам когда-нибудь понадобится получить документ Word из презентации PowerPoint, вы можете использовать конвертер Aspose Presentation to Word Document.

  • Aspose.Words Product Family
  • clone table in word document using python
  • create nested table in word document using python
  • create table in docx document using python
  • create table in word document using python

Создание таблицы в Python

Особо никак. Если работает (а оно, вроде, работает), то зачем вам ещё что-то?

7 окт 2021 в 10:48

Я бы вместо словаря как тела таблицы использовал список списков

7 окт 2021 в 10:56

а я бы использовал pandas

7 окт 2021 в 11:00

Reymi, отметьте и примите, пожалуйста, ответ, что решает вашу проблему 🙂

12 окт 2021 в 13:04

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Мне кажется, данными таблицы должны быть списки/кортежи, а в случаи словаря его нужно приводить к необходимому виду

Плюс, количество столбцов, из-за использования тела как словаря, будет 2, думаю нужно поддержать произвольное количество столбцов

def pretty_table(data, cell_sep=' | ', header_separator=True) -> str: rows = len(data) cols = len(data[0]) col_width = [] for col in range(cols): columns = [str(data[row][col]) for row in range(rows)] col_width.append(len(max(columns, key=len))) separator = "-+-".join('-' * n for n in col_width) lines = [] for i, row in enumerate(range(rows)): result = [] for col in range(cols): item = str(data[row][col]).rjust(col_width[col]) result.append(item) lines.append(cell_sep.join(result)) if i == 0 and header_separator: lines.append(separator) return '\n'.join(lines) 
data = [ ["Категории", "Цена"], ] rows = [ data[0] ] rows += [(k, v) for k, v in data[1].items()] print(pretty_table(rows)) 
 Категории | Цена -------------+------ book | 58 organization | 0 homegum | 55 summer | 1 win | 85189 

Как создать таблицу в питоне

Для отображения данных в виде таблицы параметру show предпочтительно передать значение «headings» (если надо отображать заголовки), либо » » (для таблицы без заголовков). Определим небольшую таблицу с тремя столбцами:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # определяем данные для отображения people = [("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com")] # определяем столбцы columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings") tree.pack(fill=BOTH, expand=1) # определяем заголовки tree.heading("name", text="Имя") tree.heading("age", text="Возраст") tree.heading("email", text="Email") # добавляем данные for person in people: tree.insert("", END, values=person) root.mainloop()

Здесь данные, которые будут отображаться в таблице, определены в виде списка people, который хранит набор кортежей. Каждый кортеж состоит из трех элементов. Условно будем считать, что первый элемент кортежа представляет имя пользователя, второй — возраст, а третий — электронный адрес. И эти данные нам надо отобразить в таблице:

people = [("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com")]

Для отображения этих данных определяем три столбца: name, age и email в виде кортежа и передаем их параметру columns :

columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings")

Далее нам надо настроить заголовки столбца с помощью метода heading() класса Treeview (по умолчанию столбцы не имеют никаких заголовков). Данный метод принимает ряд параметров:

tree.heading("name", text="Имя")

Первый параметр указывает на имя столбца. В примере выше определяем также параметр text , который определяет текст заголовка

И последний момент — добавляем сами данные в таблицу с помощью метода insert() класса Treeview

tree.insert("", END, values=person)

Первый параметр — пустая строка «» указывает, что элемент добавляется как элемент верхнего уровня (то есть у него нет родительского элемента). Значение END указывает, что элемент добавляется в конец набора. И параметр values в качестве добавляемых данных устанавливает кортеж person.

В итоге мы получим следующую таблицу:

Создание таблицы с помощью Treeview в Tkinter и python

Настройка столбца

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

Прежде всего мы можем настроить заголовки столбца с помощью метода heading() :

heading(column, text, image, anchor, command)
  • column : имя настраиваемого столбца
  • text : текст заголовка
  • image : картинка для заголовка
  • anchor : устанавливает выравнивание заголовка по определенному краю. Может принимать значения n, e, s, w, ne, nw, se, sw, c
  • command : функция, выполняемая при нажатии на заголовок

Для настройки столбца в целом применяется метод column() :

column(column, width, minwidth, stretch, anchor)
  • column : индекс настраиваемого столбца в формате «# номер_столбца»
  • width : ширина столбца
  • minwidth : минимальная ширина
  • anchor : устанавливает выравнивание заголовка по определенному краю. Может принимать значения n, e, s, w, ne, nw, se, sw, c
  • stretch : указывает, будет ли столбец растягиваться при растяжении контейнера. Если будет, то значение True , иначе значение False

Применим некоторые из этих параметров:

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") # определяем данные для отображения people = [("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com")] # определяем столбцы columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings") tree.pack(fill=BOTH, expand=1) # определяем заголовки с выпавниваем по левому краю tree.heading("name", text="Имя", anchor=W) tree.heading("age", text="Возраст", anchor=W) tree.heading("email", text="Email", anchor=W) # настраиваем столбцы tree.column("#1", stretch=NO, width=70) tree.column("#2", stretch=NO, width=60) tree.column("#3", stretch=NO, width=100) # добавляем данные for person in people: tree.insert("", END, values=person) root.mainloop()

В данном случае для заголовков устанавливаем выравнивание по левому краю. Для столбцов запрещаем растяжение и устанавливаем ширину.

настройка столбцов в таблице в виджете Treeview в Tkinter и Python

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

# предполагается, что в папке приложения располагается файл email_icon_micro.png email_icon = PhotoImage(file="./email_icon_micro.png") tree.heading("email", text="Email", anchor=W, image=email_icon)

картинка в заголовке столбца в таблице в виджете Treeview в Tkinter и Python

Добавление к Treeview прокрутки

from tkinter import * from tkinter import ttk root = Tk() root.title("METANIT.COM") root.geometry("250x200") root.rowconfigure(index=0, weight=1) root.columnconfigure(index=0, weight=1) # определяем данные для отображения people = [ ("Tom", 38, "tom@email.com"), ("Bob", 42, "bob@email.com"), ("Sam", 28, "sam@email.com"), ("Alice", 33, "alice@email.com"), ("Kate", 21, "kate@email.com"), ("Ann", 24, "ann@email.com"), ("Mike", 34, "mike@email.com"), ("Alex", 52, "alex@email.com"), ("Jess", 28, "jess@email.com"), ] # определяем столбцы columns = ("name", "age", "email") tree = ttk.Treeview(columns=columns, show="headings") tree.grid(row=0, column=0, sticky="nsew") # определяем заголовки tree.heading("name", text="Имя", anchor=W) tree.heading("age", text="Возраст", anchor=W) tree.heading("email", text="Email", anchor=W) tree.column("#1", stretch=NO, width=70) tree.column("#2", stretch=NO, width=60) tree.column("#3", stretch=NO, width=100) # добавляем данные for person in people: tree.insert("", END, values=person) # добавляем вертикальную прокрутку scrollbar = ttk.Scrollbar(orient=VERTICAL, command=tree.yview) tree.configure(yscroll=scrollbar.set) scrollbar.grid(row=0, column=1, sticky="ns") root.mainloop()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *