2013-03-04 4 views
1

Я хотел был бы преобразовать .dbf файл к .xls используя python. Я ссылаюсь этот snippet, однако я не могу получить первый ряд не заголовок записи, используя этот код:dbf to xls - first non header row not writing

from xlwt import Workbook, easyxf 
    import dbfpy.dbf 

    dbf = dbfpy.dbf.Dbf("C:\\Temp\\Owner.dbf") 
    book = Workbook() 
    sheet1 = book.add_sheet('Sheet 1') 

    header_style = easyxf('font: name Arial, bold True, height 200;') 

    for (i, name) in enumerate(dbf.fieldNames): 
     sheet1.write(0, i, name, header_style) 

    for row in range(1, len(dbf)): 
     for col in range(len(dbf.fieldNames)): 
      sheet1.row(row).write(col, dbf[row][col]) 

    book.save("C:\\Temp\\Owner.xls") 

Как я могу получить первый ряд не заголовок писать?

Благодаря

ответ

2

Вы пропускаете строку 0 в DBF, которая является первой строкой. В файлах dbf имена столбцов не являются строкой. Однако строка 0 в файле Excel является заголовком, поэтому индекс должен отличаться в dbf и xls, поэтому вам нужно добавить 1 в строку, используемую на листе Excel.

Так

for row in range(len(dbf)): 
    for col in range(len(dbf.fieldNames)): 
     sheet1.row(row+1).write(col, dbf[row][col]) 

Обратите внимание на Snipper называют не добавляет 1 в диапазоне либо

+0

Это дало мне следующую ошибку: Exception: Попытка перезаписать ячейки: SheetName = u'Sheet 1' rowx = 0 colx = 0 – artwork21

+0

ok Я получил ваше обновление, thx! – artwork21