使用 xlsxwriter 将文本文件数据迁移到 excel 未完全更新
Migrating text file data to excel using xlsxwriter is not updating completely
test.txt:
一个 25 12345
乙 90 67890
C 31 24680
D 89 45678
预期输出:
A1 一个
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()
在内循环中,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())
就像您自己的代码和预期的输出一样,它只会填充第一列,输入中的每个值,忽略换行符。
test.txt: 一个 25 12345 乙 90 67890 C 31 24680 D 89 45678
预期输出: A1 一个 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()
在内循环中,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())
就像您自己的代码和预期的输出一样,它只会填充第一列,输入中的每个值,忽略换行符。