2012-04-11 7 views
0

ReportLab을 처음 사용한 것은 기존의 스크립트를 편집하려고 시도했지만 시도하고 실행할 때 다음 오류가 발생합니다. 스크립트.ReportLab - 테이블을 만들 때 오류가 발생했습니다.

스크립트 -

import os, arcgisscripting, datetime, getpass, string 

from reportlab.lib.pagesizes import A4 
from reportlab.platypus import * 
from reportlab.lib import colors 
from reportlab.lib.styles import ParagraphStyle 

myWorkspace = r"W:\City.gdb" 
myReportFolder = r"W:\Reports" 
myLogosFolder = r"W:\Logos" 
OpenPDF = "true" 

gp = arcgisscripting.create(9.3) 


#setup geoprocessor 
gp.workspace = myWorkspace 
gp.toolbox = "analysis" 
gp.OverwriteOutput = 1 
mySelectedGroupsFC = myWorkspace + os.sep + "SelectedGroups" 
myNewBusinessFC = myWorkspace + os.sep + "New_Businesses" 
myBufferFC = myWorkspace + os.sep + "Buffer" 
myReportTable = myWorkspace + os.sep + "FINAL_TABLE" 

#obtain Selected groups 
mySelGroupsCursor = gp.searchcursor(mySelectedGroupsFC) 
mySelectedGroups = mySelGroupsCursor.next() 

#obtain New Business groups 
myNewBusinessCursor = gp.searchcursor(myNewBusinessFC) 
myNewBusiness = myNewBusinessCursor.next() 

#obtain Buffer 
myBufferCursor = gp.searchcursor(myBufferFC) 
myBuffer = myBufferCursor.next() 

#setup PDF doc 
Author = getpass.getuser() #gets OS user name 
pdf_file_name = myNewBusiness.POSTCODE 
pdf_file = myReportFolder + os.sep + pdf_file_name + ".pdf" 

doc = SimpleDocTemplate(pdf_file, pagesize=A4) 

#array of report elements 
parts = [] 

# 
#HEADER 
# 
parstyle = ParagraphStyle(name='Title', fontName='Helvetica', fontSize=12, alignment=1, spaceAfter=20) 
p = Paragraph('<b><u>Report</u></b>', parstyle) 
parts.append(p) 

p = Paragraph('The following community groups are located within <b><u>' + myBuffer.Buffer + 'metres of - <b><u>' + myNewBusiness.Postcode + '<\b><\u>.',parstyle) 
parts.append(p) 

# 
#TABLE 
# 

while myBuffer: 
    parstyle = ParagraphStyle(name='Title', fontName='Helvetica', fontSize=11, alignment=0, spaceAfter=15, spaceBefore =15) 
    p = Paragraph('<b><u>Community groups within ' + myBuffer.Buffer + ' metres of ' + myNewBusiness.Postcode + '</u><\b>', parstyle) 
    parts.append(p) 

    data = [] 
    parstyle = ParagraphStyle(name='Title', fontName='Helvetica', fontSize=11, alignment=0)  

    while mySelectedGroups: 
     selectedGroups_desc = 'Community ID:'+ '<i>' + mySelectedGroups.Community_ID + '<\i>' + 'Organisation Name :' + mySelectedGroups.Organisation_Name 
     p = Paragraph(selectedGroups_desc, parstyle) 
     mySelectedGroups = mySelGroupsCursor.next() 


    #build and format table 
    t=Table(data, colWidths=(100,100)) 
    t.setStyle(TableStyle([ 
     ('ALIGN',(0,0),(-1,-1),'CENTER'), 
     ('VALIGN',(0,0),(-1,-1),'TOP'), 
     ('INNERGRID', (0,0), (-1,-1), 0.25, colors.black), 
     ('BOX', (0,0), (-1,-1), 0.25, colors.black), 
     ('TOPPADDING', (0,0), (-1,-1), 10), 
     ])) 
    parts.append(t) 

myBuffer = myBufferCursor.next() 

#Footnote 
parstyle = ParagraphStyle(name='Title', fontName='Helvetica', fontSize=11, alignment=0, spaceAfter=15, spaceBefore=15) 
p = Paragraph('''Should you have any further questions **''', parstyle) 
parts.append(p) 


#Build document 
doc.build(parts) 

del mySelGroupsCursor, myNewBusinessCursor, myBufferCursor 

#Open document 
if OpenPDF == "true": 
    os.startfile(pdf_file) 

I가 얻을 오류 :

Traceback (most recent call last): 
    File "C:\Python25\Lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 325, in RunScript 
    exec codeObject in __main__.__dict__ 
    File "H:\Report_v2.py", line 100, in <module> 
    t=Table(data, colWidths=(100,100)) 
    File "C:\Python25\Lib\site-packages\reportlab\platypus\tables.py", line 236, in __init__ 
    raise ValueError("%s must have at least a row and column" % self.identity()) 
ValueError: <[email protected] 0 rows x unknown cols>... must have at least a row and column 

내가 조금 고군분투으로 내가해야 할 일을 어떤 아이디어가.

감사합니다.

답변

1

오류 및 코드에서 data이 빈 배열 [] 인 것 같습니다. ReportLab은 이것에 대해 질식하는 것처럼 보이기 때문에 테이블 t에 실제로 일부 데이터를 제공하면됩니다.

관련 문제