Python:使用xlsxwriter逐行导入从txt到excel

时间:2016-12-19 16:34:51

标签: python excel xlsxwriter

嗨,谢谢你的阅读。

我在python中遇到for循环问题。 我正在尝试逐行读取我的.txt文件,并使用worksheet.write_row导入excel中的每一行。 我已经尝试了许多其他方法来完成这项工作,但对于所有这些都是新手,这个对我来说是最容易理解的。

它只从文件中选择了一行,所以我很确定我写的“for”循环出了问题。

我已经尝试了所有不同类型的编辑循环,我能想到但没有任何效果。我也研究过网络,但找不到任何我能认同的解决方案。所以任何帮助都将不胜感激。

import xlsxwriter

workbook = xlsxwriter.Workbook('pythonlinetest.xlsx')        #create file
worksheet = workbook.add_worksheet()                         #create worksheet
data = open('160919-001 14cts c133_vi.txt','r')                #loaddata

#count lines
linelist = data.readlines()
count = len(linelist)
print count          #check lines

#make each line and print in excel
for n in range (0, len(linelist))
    line = linelist[n]
    splitline = line.split("\t")
    worksheet.write_row(row, 0, splitline)
    row += 1

>>>> Error: File "<ipython-input-4-abc8f489522d>", line 2
    for n in range (0, len(linelist))
                                     ^
SyntaxError: invalid syntax


#close workbook
workbook.close()

非常感谢!

2 个答案:

答案 0 :(得分:1)

在评论中撰写讨论,

  1. 您错过了错误消息中提到的该行末尾的:
  2. 如果您的输入不是ascii,则需要覆盖解码行为。
  3. 有关覆盖xlsxwriter
  4. 的输入格式行为,请参阅http://xlsxwriter.readthedocs.io/tutorial03.html

答案 1 :(得分:0)

感谢Baris Demiray的帮助,我成功地逐行进行了这项工作。我有一个由“º”符号引起的解码错误。现在已修复。如果有人有兴趣,我会分享我的代码。

唯一的问题是,如果您的.txt文件包含数字,excel最初将无法识别这些数字。如果有人知道如何编辑此代码以便excel能够识别带有数字的字符串,请随时编辑。

import xlsxwriter

workbook = xlsxwriter.Workbook('test.xlsx')        #create file
worksheet = workbook.add_worksheet()           #create worksheet
data = open('your.txt','r')                #loaddata

linelist = data.readlines()              #read each line
count = len(linelist)                 #count lines
print count                       #check number of lines

for num in range (0, count):         #create each line and print in excel
    line = linelist[num]            #load each line in variable
    line = line.decode('latin1')         #decode problem solution
    splitline = line.split("\t")          #split lines
    worksheet.write_row(num, 0, splitline)         #write each line in excel

workbook.close()            #close workbook

就是这样,也许它可能会帮助某些人。请记住,我是新手,并且多年没有编程,所以我确信有更好的方法可以做到这一点。