我使用報表實驗室庫在PDF報表上打印表格。我想知道是否可以將表配置爲執行單元格內容的自動換行。報表實驗室中的換行PDF表
例如,我有一個文本不適合列中的單元格。我希望表格執行自動調整單元格的內容以適應列寬。可能嗎?
我使用報表實驗室庫在PDF報表上打印表格。我想知道是否可以將表配置爲執行單元格內容的自動換行。報表實驗室中的換行PDF表
例如,我有一個文本不適合列中的單元格。我希望表格執行自動調整單元格的內容以適應列寬。可能嗎?
您可以將任何流動元素放在表格元素中。將所有表格元素作爲流動元素可能是一種很好的做法,因此它們的樣式可以相同。對於你的情況,你很可能需要一個段落流。例如。
styles = getSampleStyleSheet()
text = Paragraph("long line",
styles['Normal'])
你可以把'文本」到你喂到表中的數據,它會自動換行。
我的解決方案,力換行符的字符串:
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
*字的整個代碼包
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()
歡迎來到stackOverFlow。請提供關於代碼的一些解釋。並閱讀[** FAQ **](http://stackoverflow.com/faq) – 2013-06-01 09:16:25
我現在測試它,它真的有用,包裝用字。謝啦! – 2010-01-23 17:38:51
如果數據更長,並且需要第二行才能填充,那麼我的其他單元格數據也從第二行開始,並且第一行這些單元格保持空白。你能幫忙嗎?使我的其他細胞數據不會轉移到第二行開始而不是 – 2018-01-04 12:29:10