2012-10-12 13 views
5

का उपयोग कर एक पृष्ठ, मेरे पास रिपोर्टलैब का उपयोग करके दो तालिकाओं को उत्पन्न करने के लिए पाइथन में निम्न कोड है। क्या ReportLab का उपयोग करके इन दो तालिकाओं को एक साथ रखने का कोई तरीका है?एकाधिक टेबल (5) ReportLab

from reportlab.lib import colors 
from reportlab.lib.pagesizes import letter, inch 
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle 

doc = SimpleDocTemplate("simple_table_grid.pdf", pagesize=letter) 
elements = [] 

data= [['00', '01', '02', '03', '04','10', '11', '12', '13', '14'], 
    ['10', '11', '12', '13', '14', '10', '11', '12', '13', '14'], 
    ['20', '21', '22', '23', '24', '10', '11', '12', '13', '14'], 
    ['30', '31', '32', '33', '34', '10', '11', '12', '13', '14']] 

t=Table(data,5*[0.3*inch], 4*[0.2*inch]) 
t.setStyle(TableStyle([ 
     ('BACKGROUND',(0,0),(4,0),colors.gray), 
        ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
        ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
        ])) 

elements.append(t) 

data= [['100', '01', '02', '03', '04'], 
    ['10', '11', '12', '13', '14'], 
    ['20', '21', '22', '23', '24'], 
    ['30', '31', '32', '33', '34']] 

t=Table(data,5*[0.3*inch], 4*[0.2*inch]) 
t.setStyle(TableStyle([ 
     ('BACKGROUND',(0,0),(4,0),colors.gray), 
        ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
        ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
        ])) 

elements.append(t) 

doc.build(elements) 
+2

क्या आपने फ्रैंक का उपयोग करने की कोशिश की है एम्स? आप एक दूसरे के बगल में 2 फ्रेम रख सकते हैं, और प्रत्येक फ्रेम को भरने के लिए टेबल चौड़ाई को ट्विक कर सकते हैं (इसलिए यह अगले एक में रिपोर्ट करने के लिए रिपोर्टलैब को मजबूर करता है), या मैन्युअल रूप से फ़्रेमब्रैक को अगले में जाने के लिए जोड़ता है। अगर आज कोई और जवाब नहीं देता है तो मुझे आज रात में एक उदाहरण का काम करने में सक्षम होना चाहिए। – Nitzle

उत्तर

4

एक तीसरी तालिका बनाएं जो आपके द्वारा बनाए गए दो तालिकाओं के लिए खोल के रूप में कार्य करेगी। इस तालिका में दो कॉलम और एक पंक्ति होगी। प्रत्येक कॉलम संबंधित बाल तालिका का आकार होगा।

उदाहरण:

अपने दो टेबल बना में अलग तालिका वार्स (जैसे table1, table2)

t1_w = <your first table width size> 
t2_w = <your second table width size> 
data = [[table1, table2]] 
shell_table = Table(data, colWidths=[t1_w, t2_w]) 
2

उदाहरण:
* पूरे कोड

from reportlab.lib import colors 
from reportlab.lib.pagesizes import letter, inch 
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle 

doc = SimpleDocTemplate("simple_table_grid.pdf", pagesize=letter) 
elements = [] 

data1 = [['00', '01', '02', '03', '04', '10', '11', '12', '13', '14'], 
     ['10', '11', '12', '13', '14', '10', '11', '12', '13', '14'], 
     ['20', '21', '22', '23', '24', '10', '11', '12', '13', '14'], 
     ['30', '31', '32', '33', '34', '10', '11', '12', '13', '14']] 

t1 = Table(data1, 5 * [0.3 * inch], 4 * [0.2 * inch]) 
t1.setStyle(TableStyle([ 
    ('BACKGROUND', (0, 0), (4, 0), colors.gray), 
    ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), 
    ('BOX', (0, 0), (-1, -1), 0.25, colors.black), 
])) 


data2 = [['100', '01', '02', '03', '04'], 
     ['10', '11', '12', '13', '14'], 
     ['20', '21', '22', '23', '24'], 
     ['30', '31', '32', '33', '34']] 

t2 = Table(data2, 5 * [0.4 * inch], 4 * [0.2 * inch]) 
t2.setStyle(TableStyle([ 
    ('BACKGROUND', (0, 0), (4, 0), colors.gray), 
    ('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black), 
    ('BOX', (0, 0), (-1, -1), 0.25, colors.black), 
])) 

data = [[t1, t2]] 
# adjust the length of tables 
t1_w = 3 * inch 
t2_w = 3 * inch 
shell_table = Table(data, colWidths=[t1_w, t2_w]) 
elements.append(shell_table) 
doc.build(elements) 
+0

बहुत अच्छा काम करता है, लेकिन एक ही लाइन पर एक छवि और अनुच्छेद नहीं मिल सकता – radtek

संबंधित मुद्दे