这是我的python脚本:
from xlrd import open_workbook
from xlrd import xldate_as_tuple
book = open_workbook('C:/Users/.......Constantquotes.xlsx')
sheet0 = book.sheet_by_index(0) #Initializes the first row
print sheet0.row(0) #Prints the first row
date_value = xldate_as_tuple(sheet0.cell(0,1).value,book.datemode)
print date_value #Prints the date cell
# Next step: make the a list for the stock price
# Next step: append the list to a csv
所以我正在将价格放入excel中,它们每秒都会更新。我想做的是让 python 脚本每十分钟读取一次 excel 表(我将使用 cronjob 激活 python 脚本),然后将最新价格附加到仅包含该股票价格的 csv 文件中。问题是,当我运行python脚本时,它给了我价格和上次保存excel文件的日期,而不是当前价格。我试图设置选项-->保存-->保存-->保存自动恢复信息-->1分钟,但这对我没有帮助。因此,为了重新表述这个问题,我如何使每次 xlrd 读取.xls文件(以便 python 脚本可以提取当前价格和日期)时,我都会得到当前价格和日期,而不是上次保存 .xlxs 文件时的价格和日期?
理想情况下,我希望能够离开计算机几天,然后回到填充.csv
或者也许有更好的解决方案来填充.csv?
我认为这是使用 VBA 更好地处理的任务之一。Python 无法访问数据,因为它尚未保存 - 它在内存中,但您告诉 python 从磁盘读取。在我看来,你有两个合理的选择之一。
- 让 VBA 宏填充 csv。
- 让VBA宏定期保存xls。
嗯,这应该在Excel中实现,而不是在Python中实现。在 VBA 中,您可以使用以下内容:
-
在VBA代码的开头。
Application.DisplayAlerts = False
-
当您要保存工作簿时。
ThisWorkbook.Save
使用步骤 1 的原因是确保在您离开计算机时,在保存工作簿之前不会要求手动确认。我建议不要在每次价格更新时保存工作簿。也许您可以使用计时器定期保存它。
创建 CSV?
使用小型VBA计时器脚本在同一工作表中复制股票价格,只需每1分钟将行号增加10,您的限制是excel最大行号。如果您想要一个文件,我正在这样做或写入文件。
Sub timer()
Application.OnTime Now() + TimeValue("00:10:00"), "main" 'repeat main every 10minute
End Sub
'------------------------------------------------------
Sub main()
Cells(i+1, 1) = price
i = i + 1
timer
End Sub