python获取excel数据,PySimpleGUI按日期起止范围筛选数据
时间: 2023-11-04 16:06:06 浏览: 128
好的,关于你的问题,首先你需要使用Python的pandas库来获取Excel数据。你可以使用pandas.read_excel()方法来读取Excel文件并将其转化为DataFrame对象。
然后,你需要使用PySimpleGUI来创建一个GUI界面,用来筛选数据。你可以使用PySimpleGUI中的Calendar选择器来选择起止日期范围。
最后,你需要编写一个过滤器函数来根据所选日期范围筛选数据。你可以使用pandas的DataFrame.query()方法来实现。代码示例如下:
```python
import pandas as pd
import PySimpleGUI as sg
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 创建GUI界面
layout = [[sg.CalendarButton('开始日期', target='startdate', format='%Y-%m-%d'),
sg.InputText(key='startdate', readonly=True),
sg.CalendarButton('结束日期', target='enddate', format='%Y-%m-%d'),
sg.InputText(key='enddate', readonly=True)],
[sg.Button('筛选')]]
window = sg.Window('筛选数据', layout)
# 定义过滤器函数
def filter_data(start_date, end_date):
return df.query('date >= @start_date and date <= @end_date')
# 处理GUI事件
while True:
event, values = window.read()
if event == sg.WINDOW_CLOSED:
break
if event == '筛选':
start_date = pd.to_datetime(values['startdate']).date()
end_date = pd.to_datetime(values['enddate']).date()
filtered_data = filter_data(start_date, end_date)
print(filtered_data)
window.close()
```
这个示例代码中,我们首先读取Excel数据并创建了一个GUI界面。界面包含了两个Calendar选择器,用来选择起止日期范围,以及一个筛选按钮。
在事件处理中,当用户点击筛选按钮时,我们将使用pd.to_datetime()函数将选择的日期转换为pandas的日期类型,并将这些日期传递给filter_data()函数进行筛选。函数使用DataFrame.query()方法来根据日期范围筛选数据,并将结果打印出来。
希望这个示例代码能对你有所帮助!
阅读全文