2017-06-22 49 views
1

我正在编写一个将.txt文件转换为.xls文件的代码,我需要为每个第四列的.txt文件进入“Sheet 1”第三个文件进入,说“工作表2”等等。文本文件在前2行中包含标题,实际数据在第3列中开始。我不知道如何做到这一点和任何指导或帮助将不胜感激。这是我现在的代码:将文本文件中的列写入excel中的单独工作表

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') 
+2

请不要将代码添加为照片。请[编辑]您的文章以包含文本形式的代码。 –

+0

另外,如果你能解释为什么你的代码没有达到你的期望,这会很有帮助。出了什么问题? – roganjosh

+0

@ScottCraner对不起,我修好了。 –

回答

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 

下面是关于如何使用VBA在Excel中开始一个很好的链接https://msdn.microsoft.com/en-us/library/office/ee814737(v=office.14).aspx 要重新格式化此为你需要什么,你可以改变指向yourDocument.txt的路径转至您的txt文件,并将Sheet1和Sheet2重命名为所需表单的名称。另外,如果您想添加东西到其他工作表或同一工作表中的不同列,您可以添加更多行。此外,根据您的分隔符是什么,您应该更改Split()方法中的第二个参数。我认为这个语法是相当自我解释的,但如果你遇到困难,网上有很多文档。希望这可以帮助!如果你想更深入地研究这个文件,那么我也可以把这个文件IO放在这里,另外这里是Read/Parse text file line by line in VBA

+0

这可以工作,但是,这必须在Python中完成。不允许使用其他语言。 –

相关问题