2 回答
TA贡献1803条经验 获得超6个赞
我根本不知道你的界面,但这是我收集到的:
import openpyxl
months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
sheets = {}
for month in months:
filepath = 'C:\\codes\\Furnace_time_log\\2019\\' + month + '_2019.xlsx'
workbook = openpyxl.load_workbook(filepath)
sheet_name = month + '_sheet'
sheet = workbook_name.get_sheet_by_name(sheet_name)
sheets[month] = sheet
这是假设您的工作表已命名xxxx_month(例如January_month,区分大小写)而不是Sheet1您最初使用的名称。完成后,您将拥有一个字典,将月份名称映射到工作表对象。
如果我所做的某些事情没有意义,请告诉我,我会进行编辑。
TA贡献1846条经验 获得超7个赞
我可以看到您的代码存在几个问题:
文件名中的转义序列不正确。
重新分配变量。
您正在尝试创建两组不同的动态变量:工作簿和工作表,但没有建立它们之间的关系。
在下面的代码中,第一行将值存储到变量“sheet_name”。第二个将新值存储到相同的变量中,更改其值:
sheet_name = month+'_sheet'
sheet_name = workbook_name.get_sheet_by_name('Sheet1')
您要做的是动态创建变量名称和值。除非非常需要创建这样的变量集,否则我建议为此使用列表或字典:
months = ['January', 'February', 'March','April', 'May', 'June', 'July',
'August', 'September', 'October', 'November', 'December']
wb_format = r'C:\codes\Furnace_time_log\2019\{}_2019.xlsx'
workbooks = dict((month, wb_format.format(month)) for month in months)
如果您真的想创建这些变量,请查看locals()和globals(),但请务必小心。
添加回答
举报