Перенос данных текстового файла в Excel с использованием xlsxwriter не обновляется полностью - PullRequest
0 голосов
/ 26 января 2020

test.txt: A 25 12345 B 90 67890 C 31 24680 D 89 45678

ожидаемый выход: A1 A A2 25 A3 12345 A4 B A5 90 A6 67890 ......

только последние три данные поступают в Excel

import xlsxwriter

workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet()

with open('test.txt', 'r') as f:
    for i in f.readlines():
        for j,k in enumerate(i.split()):
            worksheet.write('A'+str(j+1), k)
    workbook.close()

1 Ответ

1 голос
/ 26 января 2020

Внутри внутреннего l oop, j всегда будет перечислением 0,1,2, поэтому вы многократно пишете в ячейки A1, A2 и A3. Вы можете убедиться в этом сами, если вы напечатаете результат на своей консоли:

A1 A
A2 25
A3 12345
A1 B
A2 90
A3 67890
A1 C
A2 31
A3 24680
A1 D
A2 89
A3 45678

Вы всегда хотите увеличить число в первом аргументе write, чтобы следующая строка была проиндексирована; значение, на которое нужно увеличить, - это длина разделенного списка (3 для вашего текущего ввода, но чтобы убедиться, что я использую фактическую длину каждой строки ниже). Поскольку Excel начинает считать строки с 1, этот счетчик также должен начинаться с 1. Это будет работать:

counter = 1
for i in f.readlines():
    for j,k in enumerate(i.split()):
         worksheet.write('A'+str(j+counter), k)
    counter += len(i.split())

Как и ваш собственный код и ожидаемый вывод, все, что он будет делать, это заполнять только первый столбец, с каждым значением во входе, игнорируя разрывы строк.

...