谁知道,请帮助我了解此代码如何产生所需的页面。
c = canvas.Canvas("sample.pdf")
sample1 = csv.reader(open('sample1.csv'))
for i in sample1:
first = i[0]
c.drawString(100,800,first)
sample2 = csv.reader(open('sample2.csv'))
for x in sample2:
sec = x[0]
third = x[1]
fourth = x[2]
c.drawString(200,700,sec)
c.drawString(200,600,third)
c.drawString(200,500,fourth)
c.showPage()
c.save()
照原样,它仅成功打印出sample2中的文档,并成功打印出sample1中项目的一页...。我正在尝试从两个文档中提取信息以用于生成一个pdf。
我不知道我是否理解问题,但是我会在没有嵌套循环的情况下进行此操作
它创建三个页面X
,Y
,Z
和接下来的三个页面ABC
,DEF
,GHI
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a in sample1:
c.drawString(100, 800, a[0])
c.showPage()
for b in sample2:
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()
但是如果您只想创建三个页面X+ABC
,Y+DEF
,Z+GHI
,则需要zip()
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
#sample2 = csv.reader(open('sample2.csv'))
sample1 = ["X", "Y", "Z"]
sample2 = ["ABC", "DEF", "GHI"]
for a, b in zip(sample1, sample2):
c.drawString(100, 800, a[0])
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()
BTW:如果需要九页
X+ABC
,X+DEF
,X+GHI
Y+ABC
,Y+DEF
,Y+GHI
Z+ABC
,Z+DEF
,Z+GHI
然后您必须在第二个循环内移动drawString( a[0])
和showPage()
from reportlab.pdfgen import canvas
import csv
c = canvas.Canvas("sample.pdf")
#sample1 = csv.reader(open('sample1.csv'))
sample1 = ["X", "Y", "Z"]
for a in sample1:
#sample2 = csv.reader(open('sample2.csv'))
sample2 = ["ABC", "DEF", "GHI"]
for b in sample2:
c.drawString(100, 800, a[0])
c.drawString(200, 700, b[0])
c.drawString(200, 600, b[1])
c.drawString(200, 500, b[2])
c.showPage()
c.save()