自动将txt转换为xls

5

我正在寻找最便宜的方式来自动将文件夹结构中所有的文本文件(制表符分隔)转换为.xls格式,保持列和行的形状不变。

编辑:这个方法很管用:

import xlwt
import xlrd
f = open('Text.txt', 'r+')
row_list = []
for row in f:
    row_list.append(row.split())
column_list = zip(*row_list)
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
i = 0 
for column in column_list:
    for item in range(len(column)):
        worksheet.write(item, i, column[item])
    workbook.save('Excel.xls')
    i+=1
2个回答

2
最简单的方法是将所有文件从*.txt重命名为*.xls。Excel会自动分区数据,保持原始形状。
我不会替你编写代码,但这里有一个起点:

谢谢,但我想通过xlrd读取文件,而不是在Excel中打开并保存它,否则仅通过重命名文件将无法识别该文件为Excel文件。 - lhcgeneva
2
@lhcgeneva,你让我有点困惑了...你提到要避免使用xlrd,但最终还是要用它...那为什么不使用xlwt来转换文本文件呢? - Jon Clements
@Jon Clements 我原以为使用xlwt会很笨重,所以我想避免使用它来转换文件。是否有一种简单的方法可以使用xlwt来完成呢? - lhcgeneva
@lhcgeneva 使用 csv 模块从文本文件中获取行,然后使用 xlwt 文档中的示例代码创建你的 xls 文件...(并使用 Gareth 上面的建议来遍历你的文件) - Jon Clements

0

这个怎么样?

import xlwt
textfile = "C:/Users/your_path_here/Desktop/test.txt"

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False        


style = xlwt.XFStyle()
style.num_format_str = '#,###0.00'  

#for textfile in textfiles:
f = open(textfile, 'r+')
row_list = []
for row in f:
    row_list.append(row.split('|'))
column_list = zip(*row_list)
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('Sheet1')
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), style=style)
        else:
            worksheet.write(item, i, value)
    i+=1
workbook.save(textfile.replace('.txt', '.xls'))

抱歉,可能粘贴了错误的内容...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接