【问题标题】:Writing columns from text file into separate sheets in excel将文本文件中的列写入excel中的单独工作表
【发布时间】:2017-06-22 20:41:55
【问题描述】:

我正在编写一个将 .txt 文件转换为 .xls 文件的代码,我需要将 .txt 文件的每 4 列输入,例如“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')

【问题讨论】:

  • 请不要将代码添加为照片。请edit您的帖子以文本形式包含代码。
  • 另外,如果您能解释为什么您的代码没有达到您的预期,这将很有帮助。出了什么问题?
  • @ScottCraner 抱歉,我已经解决了。
  • @roganjosh 我对 python 很陌生,我不确定如何编辑代码。我尝试了一些事情,但没有取得太大成就。我觉得这与制作 for 循环来遍历列有关,但我不知道该怎么做。

标签: python excel


【解决方案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() 方法中的第二个参数。我认为语法是不言自明的,但是如果你遇到困难,网上有很多文档。希望这可以帮助!另外,如果您想了解更多信息,我将这里的文件 IO 建立在 Read/Parse text file line by line in VBA 的其他帖子中。

【讨论】:

  • 这可以工作,但是,这必须在 Python 中完成。不允许使用其他语言。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多