2016-04-14 17 views
-3

Ich möchte Tabelle abhängig vom Benutzereingabewert erstellen.So erstellen Sie eine Tabelle dynamisch

Es gibt maximal 7 Spalten pro Tabelle mit der ersten Spalte als Name der Zeile. Wenn der Benutzer 9 statt 7 Werte eingibt, sollte er die nächste Tabelle mit zwei Spalten erstellen. Dann zu dieser Tabelle gebe ich Wert später im Prog von etwas Berechnung.

habe ich versucht, diesen Code aber immer Fehler

vr={} 
num=0 
    for num in range(1,k): 
     print site_count 
     print 'num is',num 

vr[str(num)]=document.add_table(rows=13, cols=(7)) 
print vr['1'] 

for num in range(1,k+1): 
    vr['num'].cell(1, 0).text='Subscribed BW' 
    vr['num'].cell(2, 0).text='Peak LAN' 
    vr['num'].cell(3, 0).text='Peak WAN-IN' 
    vr['num'].cell(4, 0).text='Peak WAN-OUT' 
    vr['num'].cell(5, 0).text='Recommended BW Capacity' 
    vr['num'].cell(7, 0).text='Peak Compression' 
    vr['num'].cell(9, 0).text='Optimized Traffic' 
    vr['num'].cell(10, 0).text='Optimized Traffic%' 
    vr['num'].cell(12, 0).text='Key Applications' 
    vr['num'].style ='TableGrid' 

ERROR als:. vr [ 'num'] Zelle (1, 0) .text = 'Gezeichnetes BW' KeyError: 'num'

Gibt es eine andere Lösung

Antwort

0

Sie str() nicht unnötig, versuchen Sie den Code followig

vr = {} 
num = 0 
vr[num]=document.add_table(rows=13, cols=(7)) 
print vr['1'] 

for num in range(1,k+1): 
    vr[num].cell(1, 0).text='Subscribed BW' 
    vr[num].cell(2, 0).text='Peak LAN' 
    vr[num].cell(3, 0).text='Peak WAN-IN' 
    vr[num].cell(4, 0).text='Peak WAN-OUT' 
    vr[num].cell(5, 0).text='Recommended BW Capacity' 
    vr[num].cell(7, 0).text='Peak Compression' 
    vr[num].cell(9, 0).text='Optimized Traffic' 
    vr[num].cell(10, 0).text='Optimized Traffic%' 
    vr[num].cell(12, 0).text='Key Applications' 
    vr[num].style ='TableGrid' 
1

Der Schlüssel 'num' existiert nicht in Ihrem Wörterbuch.

vr[str(num)] = document.add_table(rows=13, cols=(7)) 

hier num die ganze Zahl k. Es sieht so aus, als ob Sie die Zuweisung innerhalb der ersten Schleife platzieren möchten.

In der zweiten Schleife Sie versuchen,

vr['num'] 

Versuchen zuweisen:

vr[str(num)] 

Beachten Sie, dass für nummerierte Indizierung Sie wahrscheinlich besser dran ein mit list oder array.

0

Das erste, was zu tun ist, die Anführungszeichen um num in vr['num'] als die Zeichenfolge zu entfernen "num" kein Schlüssel in dict ist vr, und Sie sollten den String-Wert von num werden:

for num in range(1,k+1): 
    vr[str(num)].cell(1, 0).text='Subscribed BW' 
    vr[str('num')].cell(2, 0).text='Peak LAN' 
    ... 

Aber, Da Sie num nur als Schlüssel für Ihr Diktat verwenden, ist es sinnlos, sie in eine Zeichenfolge umzuwandeln - Sie können sie einfach als Ganzzahl verwenden.

for num in range(1,k+1): 
    vr[num].cell(1, 0).text='Subscribed BW' 
    vr[num].cell(2, 0).text='Peak LAN' 
    ... 
Verwandte Themen