在excel中将文本文件中的列写入单独的工作表
我正在写一个代码,将.txt文件转换为.xls文件,并且需要我的.txt文件的每个第四列进入,比如说“Sheet 1”和每个第三个文件,比如说“Sheet 2”向前。 文本文件的前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')
你有没有考虑使用Visual Basic的应用程序? 它基本上是一个用来处理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中开始使用VBA的好链接https://msdn.microsoft.com/zh-cn/library/office/ee814737(v=office.14).aspx要正确地重新设置你的需要,您可以将path更改为yourDocument.txt以转到您的txt文件,并将Sheet1和Sheet2重命名为所需表单的名称。 另外,如果你想添加东西到其他工作表或同一工作表中的不同列,你可以添加更多的线。 此外,根据您的分隔符,您应该更改Split()方法中的第二个参数。 我认为这个语法是相当自我解释的,但是如果你被困住了,那么在网上有很多文档。 希望这可以帮助! 此外,我基于文件IO在这里这个其他职位在这里阅读/parsing文本文件逐行在VBA,如果你想看看更多。