2012-04-11 17 views
0

Dies ist das erste Mal, dass ich ReportLab verwendet habe, habe ich versucht, ein vorhandenes Skript zu bearbeiten, das genau das tut, was ich tun möchte, aber ich bekomme den folgenden Fehler, wenn ich versuche und ausgeführt das Skript.ReportLab - Fehler beim Erstellen einer Tabelle

Script -

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) 

Der Fehler, ich erhalte, ist:

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 

Alle Ideen, was ich tun muss, wie ich ein bisschen am kämpfen.

Danke.

Antwort

1

Aus dem Fehler und dem Code scheint das Problem data ist ein leeres Array []. ReportLab scheint daran zu ersticken, also müssen Sie nur einige Daten an die Tabelle t liefern und es sollte funktionieren.

Verwandte Themen