我正在编写一个代码,将.txt文件转换为.xls文件,我需要将每个第4列的.txt文件放入,说“Sheet 1”,每隔三个文件进入,说“Sheet 2” “等等。文本文件在前两行中包含标题,实际数据在第3列中开始。我不确定如何以及任何指导或帮助将非常感激。这是我目前的代码:
import xlwt
import six
import itertools
def is_number():
try:
float(s)
return True
except ValueError:
return False
def txt_to_xls():
f=open('textfile.txt', 'r+')
row_list=[]
for row in f:
row_list.append(row.split())
column_list=map(list, siz.moves.zip_longest(*row_list, fillvalue=' '))
workbook=xlwt.Workbook()
worksheet=workbook.add_sheet('Sheet 1')
i=0
for column in column_list:
for item in range(len(column)):
value=column[item].strip()
if is_number(value):
worksheet.write(item, i, float(value))
else:
worksheet.write(item, i, value)
i+=1
workbook.save('test.xls')
答案 0 :(得分:1)
您是否考虑过使用Visual Basic for Applications?它基本上是一种用于操作excel电子表格的语言。以下是我认为可以完成您所描述的示例代码:
Sub WriteToFile()
Dim FileNum As Integer
Dim DataLine As String
Dim Counter As Integer
Counter = 0
FileNum = FreeFile()
Open "C:\Users\...\yourDocument.txt" For Input As #FileNum
While Not EOF(FileNum)
Line Input #FileNum, DataLine
Counter = Counter + 1
If Counter > 2 Then
Dim splitString As Variant
splitString = Split(DataLine, " ")
Worksheets("Sheet1").Cells(Counter - 2, 1).Value = splitString(3)
Worksheets("Sheet2").Cells(Counter - 2, 1).Value = splitString(2)
End If
Wend
End Sub
以下是有关如何在excel https://msdn.microsoft.com/en-us/library/office/ee814737(v=office.14).aspx中开始使用VBA的良好链接 要重新格式化以满足您的需要,您可以更改yourDocument.txt的路径以转到txt文件,并将Sheet1和Sheet2重命名为所需的工作表名称。此外,如果要将内容添加到其他工作表或同一工作表中的不同列,则可以添加更多类似的行。此外,根据您的分隔符,您应该更改Split()方法中的第二个参数。我认为语法是相当自我解释的,但如果你遇到困难,网上有很多文档。希望这可以帮助!此外,如果您想了解更多内容,我还会根据此处的其他帖子Read/Parse text file line by line in VBA将文件IO基于此处。