2

我正在研究 INFORMIX 4GL 程序。该程序生成输出文本文件。这是输出示例:

Lot No|Purchaser name|Billing|Payment|Deposit|Balance|                
J1006|JAUHARI BIN HAMIDI|5285.05|4923.25|0.00|361.80|                 
J1007|LEE, CHIA-JUI AKA LEE, ANDREW J. R.|5366.15|5313.70|0.00|52.45| 
J1008|NAZRIN ANEEZA BINTI NAZARUDDIN|5669.55|5365.30|0.00|304.25|     
J1009|YAZID LUTFI BIN AHMAD LUTFI|3180.05|3022.30|0.00|157.75|  

此文本文件可以手动转换为 excel 文件。但是,我想问一下,有没有可以用来将 .txt 文件转换为 .xls 文件的脚本?

大家好,现在我已经可以使用用户 Rami Helmy 提供的脚本通过 python 将文本文件转换为 Excel 文件。非常感谢他。但是现在,该脚本将生成多个 Excel 文件,具体取决于数量'|' 来自文本文件。除此之外,该脚本也只能转换一个文本文件。我将转换所有文本文件而不说明文本文件的名称。因此,我正在寻找这种脚本如何去:

  • 只输出一个excel文件
  • 转换用户提供的目录中的所有 .txt 文件。
  • 输出 Excel 的文件名自动从文本文件的文件名中复制而来。

我是python新手,希望有人能帮我解决我的问题。谢谢..

完成了所有任务,但是出现了一些问题..带有绿色标记的列是格式为文本文件,所以我无法对该列进行任何计算。该列需要转换为数字格式。其他的,输出excel文件包含一个像这样的“方形”符号:

在此处输入图像描述

那么,如何在转换文件时将绿色标记列格式设置为数字?以及如何确保没有这样的方形符号?请帮忙,谢谢...

那个奇怪的方形符号已经消失了,但那个绿色的标记还在。 在此处输入图像描述

大家好。我有一个问题要问,我已经得到了 RamiHelmi 给出的脚本,但是扩展文件名会产生如下文件:

tester.txt --> tester.txt.xls

因此,我怎样才能删除'.txt。在输出文件上,这样它只会产生“tester.xls”文件扩展名。希望有人可以帮助解决我的问题..谢谢

4

2 回答 2

9

要自动执行此操作,您可以使用此处描述的 Python 脚本:

自动将txt转换为xls

这是一个更新版本的 python 脚本,它将具有您在给定目录中描述的格式的所有文本文件转换为 XLS 文件并将它们保存在同一目录中:

# mypath should be the complete path for the directory containing the input text files
mypath = raw_input("Please enter the directory path for the input files: ")

from os import listdir
from os.path import isfile, join
textfiles = [ join(mypath,f) for f in listdir(mypath) if isfile(join(mypath,f)) and '.txt' in  f]

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

import xlwt
import xlrd

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

编辑

上面的脚本将获取在变量中指定的给定目录中所有文本文件的列表,mypath然后将每个文本文件转换为名为的 XLS 文件,generated_xls0.xls然后将命名下一个文件generated_xls1.xls等...

编辑

在将字符串写入 XLS 文件之前剥离字符串

编辑

修改了脚本以处理数字的格式

于 2013-10-30T08:32:01.823 回答
0

最简单的方法可能是这样的:

#coding:utf-8
import pandas as pd
import sys
input = sys.argv[1]
pd.read_csv(input, encoding='utf8', sep='\|', dtype='unicode').to_excel('output/' + input + '.xlsx', sheet_name='sheet1', index=False)

 

于 2016-04-07T04:55:02.393 回答