如何动态创建表

时间:2016-04-14 09:41:41

标签: python docx

我想根据用户输入值创建表。

每个表最多有7列,第一列是行的名称。当用户输入9个值而不是7时,它应该创建具有两列的下一个表。然后到那些表格,我稍后在一些计算中给出了值。

我尝试了这段代码,但收到了错误

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 as: vr [' num']。cell(1,0).text ='已订阅的BW' KeyError:' num'

还有其他解决方案

3 个答案:

答案 0 :(得分:1)

Key' num'在你的字典中不存在。

INSERT INTO drivers (name, comments, start_time, end_time) VALUES ('$name', '$comment', '$start', '$end') ON DUPLICATE KEY UPDATE comments='$comment', start_time='$start', end_time='$end' 

此处vr[str(num)] = document.add_table(rows=13, cols=(7)) 是整数num。看起来你想将赋值放在第一个循环中。

在第二个循环中,您尝试分配到

k

尝试:

vr['num']

请注意,对于编号索引,您最好使用vr[str(num)] list

答案 1 :(得分:0)

首先要删除arraynum周围的引号,因为字符vr['num']不是dict "num"中的键,您应该使用字符串值vr

num

但是,由于您只使用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' ... 作为dict的键,因此将其转换为字符串没有意义 - 您可以将其用作整数。

num

答案 2 :(得分:0)

不必要地尝试str(),尝试以下代码

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'