Проблема создания таблицы с динамическими строками и столбцами с использованием отчета - PullRequest
0 голосов
/ 08 апреля 2019

Я создаю динамический код для строк и столбцов, используя reportlab, чтобы пользователь мог вводить информацию для строк и столбцов через входные данные. Теперь моя проблема в том, что я успешно создал динамические заголовки столбцов, но строки не разделяются по количеству столбцов. Они печатаются в формате PDF в виде строки без разбиения по заголовкам столбцов. Кто-нибудь знает, как это исправить?

from reportlab.lib import colors

from reportlab.lib.pagesizes import letter

from reportlab.platypus import SimpleDocTemplate, Table, TableStyle

import os

doc = SimpleDocTemplate("teda.pdf", pagesize=letter)

# container for the 'Flowable' objects
elements = []

# These are the column widths for the headings on the table
m = int(input("enter the number of column headings: "))

row_array = []

for i in range(0,m):

    columnHeading = input("enter col heading")
    row_array.append(columnHeading)
    tableHeading = [row_array]
    tH = Table(tableHeading)          
elements.append(tH)


#generating rows for each column

n = int(input("enter the number of rows: "))

row_array = []

# Assemble rows of data for each column

for i in range(0,m):
    for j in range(0,n):
        columnData = str(input("enter col data"))
        row_array.append(columnData)
        tableRow = [row_array]
        tR=Table(tableRow)
elements.append(tR)

doc.build(elements)

print("writing")

xx = "teda.pdf"
os.startfile(xx)

Я ожидаю, что результаты как:

TOM   CHRIST JERRY VIRAT  MARK
2300  435.5   398  2145  543.34
21      32    20    19    26       AND SO ON....

1 Ответ

1 голос
/ 04 июня 2019

Измените это

for i in range(0,m):

    columnHeading = input("enter col heading")
    row_array.append(columnHeading)
    tableHeading = [row_array]
    tH = Table(tableHeading)

на

for i in range(0,m):
    columnHeading = input("enter col heading")
    row_array.append([columnHeading]) # Note [ ]
tH = Table(row_array) 
...