将多个文本文件写入不同工作表上的一个 Excel 工作簿?

Posted

技术标签:

【中文标题】将多个文本文件写入不同工作表上的一个 Excel 工作簿?【英文标题】:Write multiple text files to one excel workbook on different sheets? 【发布时间】:2017-07-01 15:08:55 【问题描述】:

我有多个包含如下信息的文本文件:

Agilent Technologies, Inc.
Date|Previous Close|Open|Day Low|Day High
2017-02-12|$50.47|$50.51|$50.02|$50.59

每个文本文件都以其ticker 命名,该文件位于文本文件master.txt 的新行上。我想要一个工作簿,每张纸上都有上述数据,应该由ticker 命名,因此我使用了以下代码:

import xlwt
textfile = "C:/Python27/SublimeText/Stocks/Master/Excel.txt"

with open("master.txt", 'r') as f:
    tickers = [line.rstrip('\n') for line in f]

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


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

for ticker in tickers:
    try:
        f = open("%s.txt" % ticker, 'r+')
    except:
        pass
    row_list = []
    for row in f:
        row_list.append(row.split('|'))
    column_list = zip(*row_list)
    workbook = xlwt.Workbook()
    worksheet = workbook.add_sheet('%s' % ticker)
    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'))

在运行上述代码时,每个 ticker 都会覆盖最后一个,而不是添加新工作表。另一个问题是数据只传输到第一列。例如,我上面给出的示例文本文件在 Excel 中如下所示:

Agilent Technologies, Inc.
Date
2017-02-12

【问题讨论】:

您正在为每个代码创建一个新的工作簿。如果您想在一个工作簿上有多个工作表,则应将 workbook = xlwt.Workbook() 移动到 for ticker in tickers 循环之前并将 workbook.save 移动到循环之后。 【参考方案1】:
workbook = xlwt.Workbook() # moved outside the loop
for ticker in tickers:
    with open("%s.txt" % ticker, 'r') as f: 
        worksheet = workbook.add_sheet('%s' % ticker)
        for row, line in enumerate(f):
            line = line.rstrip()
            for col, value in enumerate(line.split('|')):
                if is_number(value):
                    worksheet.write(row, col, float(value), style=style)
                else:
                    worksheet.write(row, col, value)

workbook.save('all_the_files.xls'))

【讨论】:

以上是关于将多个文本文件写入不同工作表上的一个 Excel 工作簿?的主要内容,如果未能解决你的问题,请参考以下文章

将不同的列堆叠成不同工作表上的一列

Python:将图像和数据帧写入同一个 excel 文件

Excel VBA 将文本框(文本和格式)复制到另一个文本框(无 ActiveX / 用户表单)

如何将可重复使用的多行/多列表从一个 Excel 工作表复制到另一个工作表上的数据库

如何在保留所有其他工作表的同时覆盖现有 Excel 工作表上的数据?

将 Excel 2007 中的文本写入 Sharepoint 站点上的 .txt 文件会导致运行时错误“76”找不到路径