2010-01-23 32 views
11

Tôi đang sử dụng thư viện Bảng báo cáo Lab để in bảng trên báo cáo PDF. Tôi muốn biết nếu nó có thể cấu hình bảng để thực hiện một gói tự động của nội dung của một tế bào. Ví dụ: Tôi có văn bản không vừa với ô trong cột. Tôi muốn rằng bảng thực hiện các bọc tự động điều chỉnh nội dung của các tế bào để phù hợp với chiều rộng cột. Có thể không?Từ bọc trên phòng thí nghiệm báo cáo Bảng PDF

Trả lời

13

Bạn có thể đặt bất kỳ lưu lượng nào trong phần tử bảng. Nó có lẽ là thực hành tốt để có tất cả các yếu tố bảng như flowables, do đó, họ có thể được theo kiểu giống nhau. Đối với trường hợp của bạn, bạn rất có thể sẽ cần một đoạn có thể chảy. ví dụ.

styles = getSampleStyleSheet() 
text = Paragraph("long line", 
       styles['Normal']) 

Bạn có thể đặt `văn bản 'vào dữ liệu bạn nạp vào bảng và nó sẽ tự động bao bọc.

+0

tôi thử nghiệm nó ngay bây giờ và nó thực sự hoạt động, bao bì bằng lời. Cảm ơn người đàn ông! –

+0

Tôi có một vấn đề sau khi sử dụng này..if dữ liệu dài hơn và có dòng thứ hai để phù hợp trong khi dữ liệu ô khác của tôi cũng bắt đầu từ dòng thứ hai và dòng đầu tiên cho các ô này vẫn trống. bạn có thể giúp đỡ với điều này? Làm cho dữ liệu ô khác của tôi không chuyển sang dòng thứ hai để bắt đầu thay vì –

2

Giải pháp của tôi, lực lượng xuống dòng trong chuỗi:

def __chopLine(line, maxline): 

    cant = len(line)/maxline 
    cant += 1 
    strline = "" 
    index = maxline 
    for i in range(1,cant): 
     index = maxline * i 
     strline += "%s\n" %(line[(index-maxline):index]) 
    strline += "%s\n" %(line[index:]) 
    return strline 
2

* Toàn bộ quy tắc ứng từ quấn

from reportlab.pdfgen import canvas 
from reportlab.lib.pagesizes import A4 
from reportlab.lib.styles import getSampleStyleSheet 
from reportlab.platypus import Paragraph, Table, TableStyle 
from reportlab.lib.enums import TA_JUSTIFY, TA_LEFT, TA_CENTER 
from reportlab.lib import colors 

# bodytext style used for wrapping data on flowables 
styles = getSampleStyleSheet() 
styleN = styles["BodyText"] 
#used alignment if required 
styleN.alignment = TA_LEFT 

styleBH = styles["Normal"] 
styleBH.alignment = TA_CENTER 


hdescrpcion = Paragraph('''<b>descrpcion</b>''', styleBH) 
hpartida = Paragraph('''<b>partida</b>''', styleBH) 


descrpcion = Paragraph('long long long long long long long long long long long long long long long long long long long long line ', styleN) 
partida = Paragraph('1', styleN) 

data= [[hdescrpcion, hpartida], 
     [partida ,descrpcion]] 

table = Table(data) 

table.setStyle(TableStyle([ 
         ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
         ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
         ])) 

c = canvas.Canvas("a.pdf", pagesize=A4) 
table.wrapOn(c, 50, 50) 
table.drawOn(c, 100,600) 
c.save() 
+1

Chào mừng bạn đến với StackOverFlow. Vui lòng cung cấp một số giải thích về mã. Và đọc [** FAQ **] (http://stackoverflow.com/faq) –

Các vấn đề liên quan