0
我有信息的多個文本文件,如下列:將多個文本文件寫入不同工作表上的一個Excel工作簿?
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()'移動到'tickers'循環中的ticker之前並將'workbook.save'移動到循環之後。 –