如何从python的xls文件中为sheet选择替代名称?

时间:2016-05-31 11:05:03

标签: python xls

我想将我的数据从python传输到各种工作表中的excel文件。所以我需要更改工作表的名称以选择要写入的正确工作表。我已经编写了这段代码,但它不接受我在ws = wb.add_sheet("Patch Size %s",%(wo))行中为我的工作表提供替代名称。

patch = [3, 5, 7, 9, 11, 13, 15, 17, 19, 25, 37, 49, 55, 60, 70, 80]

DATA = (("x", 1,),
        ("x",1),
        ("x",1),
        ("x",1 ),
        ("x",1 ),
        ("x",1 ),
        ("x",1 ),
        ("x",1 ),
        ("x",1 ),
        ("x", 1),
        ("x",1 ),
        ("x",1 ),
        ("x",1 ),
        ("x",1 ),
        ("x", 1),
        ("x",1),)

whch = 25
wb = xlwt.Workbook()
w0 = 0 
while whch != patch[w0]:
    w0 = w0+1
ws = wb.add_sheet("Patch Size %s",%(wo))
for i, row in enumerate(DATA):
    for j ,col in enumerate(row):
        if j == 0:
            ws.write(i, j, col)
        elif j == 1:
            ws.write(i, which+j, col)
ws.col(0).width = 456 * max([len(row[0]) for row in DATA])

你知道我怎么做吗?

感谢。

2 个答案:

答案 0 :(得分:1)

您的代码中存在相当多的错误。试试这个:

whch = 25
wb = xlwt.Workbook()
w0 = 0 
while whch != patch[w0]:
    w0 = w0+1
ws = wb.add_sheet("Patch Size %s" %(w0)) # no comma needed, changed wo to w0
for i, row in enumerate(DATA):
    for j ,col in enumerate(row):
        if j == 0:
            ws.write(i, j, col)
        elif j == 1:
            ws.write(i, whch+j, col)  # replaced which with whch
ws.col(0).width = 456 * max([len(row[0]) for row in DATA])

我通过制作看似最合理的替代品(例如which - > whch)来修复错误,假设它们是拼写错误,但您可能需要仔细检查以上是否仍然存在错误做你打算做的事。

答案 1 :(得分:1)

好像您的工作表名称字符串格式错误(您的逗号错误),而不是来自xlwt:

ws = wb.add_sheet("Patch Size %s",%(wo))

应该是

ws = wb.add_sheet("Patch Size %s"%(wo))

ws = wb.add_sheet("Patch Size {0}".format(wo))

希望这有帮助。