我有一个Excel表格,其中包含:
| ID产品|2019 - 01 - 21 10:00:00|2022年1月16日|2022年12月2日|2023年3月14日|
| --------------|--------------|--------------|--------------|--------------|
| A|四|1|二|五|
| B|六|1|三||
| C||七||六|
在同一张表中,我有一个下拉列表,其中包含(年和月)
- 如果我在下拉列表中选择例如year = 2020和month= 1,
它将返回如下内容:
| ID产品|2019 - 01 - 21 10:00:00|
| --------------|--------------|
| A|四|
| B|六|
| C||
然后它将计算单元的SOM:在这种情况下,som = 10
下面是我的代码:
# import load_workbook
import pandas as pd
import numpy as np
from openpyxl import load_workbook
from openpyxl.worksheet.datavalidation import DataValidation
from openpyxl import Workbook
from openpyxl.styles import PatternFill
# set file path
filepath= r'test.xlsx'
wb=load_workbook(filepath)
ws=wb["sheet1"]
#Generates 10 year in the Column MK;
for number in range(1,10):
ws['MK{}'.format(number)].value= "202{}".format(number)
data_val = DataValidation(type="list",formula1='=MK1:MK10')
ws.add_data_validation(data_val)
# drop down list with all the values from the column MK
data_val.add(ws["E2"])
#Generates the numbers of month in the Column MN;
for numbers in range(1,12):
ws['MN{}'.format(numbers)].value= "{}".format(numbers)
data_vals = DataValidation(type="list",formula1='=MN1:MN14')
ws.add_data_validation(data_vals)
# drop down list with all the values from the sheet list column MK
data_vals.add(ws["E3"])
# add a color to the cell 'year' and 'month'
ws['E2'].fill = PatternFill(start_color='FFFFFF00', end_color='FFFFFF00', fill_type = 'solid')
ws['E3'].fill = PatternFill(start_color='FFFFFF00', end_color='FFFFFF00', fill_type = 'solid')
# save workbook
wb.save(filepath)
有什么建议吗?
谢谢您的帮助。
2条答案
按热度按时间44u64gxh1#
假设你的excel文件看起来像下面这样:
最终代码如下所示:
明细:
你可以先使用
pd.read_excel
读取pandas中的表:然后使用
xlrd
访问单元格值:然后将列转换为日期时间并过滤:
c2e8gylq2#
不适用于python.3.10第170行,在open_workbook中引发XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+';不支持')