使用xlwt在Excel中编写

时间:2015-01-12 02:29:44

标签: python xlwt

我正在尝试列出我的F:驱动器中的所有目录,并将名称写入excel。

为此我使用的是Python和xlwt。

我在excel中写入文件的名称时遇到了一些错误。我试图使用for循环来增加行号,但它没有工作,因为它在写第二个值时再次击中同一个单元格。

错误:

Exception: Attempt to overwrite cell: sheetname=u'F_Directories' rowx=1 colx=0
import xlwt
import os

workbook = xlwt.Workbook()

sheet = workbook.add_sheet("F_Directories")

for dir in os.listdir("F:\\"):
# <--- Not sure how to increase row number (r)----> 
        sheet.write(r,0,dir)

workbook.save("C:\\Users\\praveen\\Desktop\\OnlinePayment_files\\Stuffs.xls")

请建议。

3 个答案:

答案 0 :(得分:1)

您可以使用enumerate()

for row, dir in enumerate(os.listdir("F:\\")):
    sheet.write(row, 0, dir)

它基本上会成为当前索引和序列项的对。默认情况下,从0开始:

>>> l = ['a', 'b', 'c']
>>> for index, item in enumerate(l):
...     print index, item
... 
0 a
1 b
2 c

答案 1 :(得分:1)

这是enumerate的好例子:

for r, dir in enumerate(os.listdir("F:\\")):
    sheet.write(r, 0, dir)

enumerate就像将range函数添加到迭代器一样 - 它从0开始,并在循环的每次迭代中添加1

答案 2 :(得分:1)

您需要的函数enumerate(),此函数调用每个元素和元素的索引号。一个简单的例子;

>>> a=["x","y","z"]
>>> for h,y in enumerate(a):
    print (h,y)


0 x
1 y
2 z
>>> 

所以你应该使用这个;

for index, direc in enumerate(os.listdir("F:\\")): #you can write whatever you want
    sheet.write(index, 0, direc)                 #instead of index and direc
                                                #but be sure you don't store them
                                               #as variables before