python - 在函数内部调用时如何将工作表添加到excel?
问题描述
我在 python 中编写了一个代码,它从 API 调用股票市场数据,执行一些功能并将结果放在 Excel 表中。唯一的问题是,每当我调用此函数时,它都会覆盖现有工作表上的新数据,而不是创建新工作表并将数据输入其中。该函数如下所示:
def getCSV(self, symbols):
for i in symbols:
getIntradayData(i, self.shorttrend, self.longtrend, self.interval)
text=self.exchangeName
x = text.split(">")
text=x[1]
workbook = xlsxwriter.Workbook('tradingviewdata.xlsx')
worksheet = workbook.add_worksheet(text)
bold = workbook.add_format({'bold': 1})
worksheet.set_column(1, 1, 15)
worksheet.write('A1', 'Symbol', bold)
worksheet.write('B1', 'Code', bold)
worksheet.write('C1', 'Code Short', bold)
row = 1
col = 0
for Symbol, Code, cs in (listfinal):
try:
worksheet.write_string (row, col,Symbol)
worksheet.write_string(row, col + 1, Code)
worksheet.write_string(row, col + 2, cs)
row += 1
except:
pass
workbook.close()
这里,symbols
是作为查询传递给的股票代码列表getIntradayData()
。
getIntradayData()
获取所有参数,从 API 获取数据并在名为 的全局列表中更新答案listfinal
,您可以看到在最后一个for
循环中调用该列表以将数据写入 excel。
一个新的excel表格是这样形成的
workbook = xlsxwriter.Workbook('tradingviewdata.xlsx')
worksheet = workbook.add_worksheet(text)
哪里tradingviewdata.xlsx
是 excel 文件的名称,text
是工作表名称。
我希望无论何时getCSV()
调用它都会检查是否text
存在同名的工作表,如果是,那么它应该将新条目更新到该工作表中。否则,如果该text
名称表不存在,它会创建一个新表并将值输入其中。
我正在调用这样getCSV()
的tkinter
GUI
self.button1 = tk.Button(self, text="Submit", command=self.ok2)
def ok2(self):
self.interval=str(self.variable_a.get())
self.shorttrend=str(self.variable_b.get())
self.longtrend=str(self.variable_c.get())
self.mic=str(self.variable_d.get())
symbols=getTickers(self.mic)
self.getCSV(symbols)
print("done")
至于问题,我发现这个相关问题的解决方案是这样的。
import xlsxwriter
list_name = ["first sheet", "second sheet", "third sheet"]
workbook = xlsxwriter.Workbook(<Your full path>)
for sheet_name in list_name:
worksheet = workbook.add_worksheet(sheet_name)
worksheet.write('A1', sheet_name)
workbook.close()
但是我想不出在我的情况下如何使用它,因为我没有现成的列表,但只要调用该函数,它就应该创建一个新工作表。
解决方案
推荐阅读
- proxy - java webstart 应用程序 (jnlp) 的 SOCKs 代理设置
- php - 如何解决与 Jenssegers/Mongodb 相关的 Lumen 错误?
- node.js - Heroku 部署错误不允许 Discord.js 机器人在线出现 [NPM_CONFIG_LOGLEVEL=error]
- swift - AVAssetExportSession.exportAsynchronously 没有取得进展
- node.js - nodejs 编写一个程序,在指定时间执行对 HTTP 端点的调用
- python - 什么是仅读取文本文件中的完整单词的python代码(词法分析仅检测整个单词)?
- html - 当高度增加时,如何使文本垂直居中?
- python - 如果任何“单元格”匹配 3 个字符串之一,则寻找 Pythonic 方法来删除 Pandas 数据框中的行
- ios - 如何在自己的完成处理程序中使用变量
- python - 无法运行 MongoDB 聚合命令 (OperationFailure)