我有一个统计备件信息的excel表,第一列是“物品名称”,第二列是“厂家”,第三列是“规格型号”,第四列是“计量单位”,第五列是“存放地点”,第六列是“当前库存“,第七列是”安全库存“,第八列是”备注“。我需要你用python写一个提取出当前库存小于安全库存的备件信息,并生成一个新的excel文件,文件名为”当天日期“+”安全库存低的备件“,并制作一个窗口画面显示这些信息,要求窗口有筛选功能
时间: 2023-09-08 15:14:49 浏览: 79
好的,我可以为您提供这个程序。首先,需要安装 openpyxl 和 tkinter 两个库,可以使用以下命令进行安装:
```
pip install openpyxl
pip install tkinter
```
然后,您可以使用以下代码来提取出当前库存小于安全库存的备件信息,并生成一个新的 Excel 文件:
```python
import openpyxl
import datetime
# 读取 Excel 文件
wb = openpyxl.load_workbook('备件信息.xlsx')
sheet = wb.active
# 获取当前日期
date = datetime.datetime.now().strftime("%Y%m%d")
# 创建新的 Excel 文件
new_wb = openpyxl.Workbook()
new_sheet = new_wb.active
# 写入表头
new_sheet.append(['物品名称', '厂家', '规格型号', '计量单位', '存放地点', '当前库存', '安全库存', '备注'])
# 遍历每一行,找出当前库存小于安全库存的备件信息
for row in sheet.iter_rows(min_row=2, values_only=True):
if row[5] < row[6]:
new_sheet.append(row)
# 保存新的 Excel 文件
new_wb.save(f'{date}安全库存低的备件.xlsx')
```
接下来,您可以使用以下代码来制作一个窗口画面显示这些信息,并添加筛选功能:
```python
import tkinter as tk
import openpyxl
# 读取 Excel 文件
wb = openpyxl.load_workbook('备件信息.xlsx')
sheet = wb.active
# 创建窗口
window = tk.Tk()
window.title('备件信息')
window.geometry('800x500')
# 创建表格
table = tk.Label(window, text='')
table.pack()
# 遍历每一行,找出当前库存小于安全库存的备件信息
data = []
for row in sheet.iter_rows(min_row=2, values_only=True):
if row[5] < row[6]:
data.append(row)
# 显示表格
table_text = '物品名称\t厂家\t规格型号\t计量单位\t存放地点\t当前库存\t安全库存\t备注\n'
for row in data:
table_text += f'{row[0]}\t{row[1]}\t{row[2]}\t{row[3]}\t{row[4]}\t{row[5]}\t{row[6]}\t{row[7]}\n'
table.config(text=table_text)
# 添加筛选功能
def filter_table():
filter_data = []
keyword = keyword_entry.get()
for row in data:
if keyword in str(row):
filter_data.append(row)
table_text = '物品名称\t厂家\t规格型号\t计量单位\t存放地点\t当前库存\t安全库存\t备注\n'
for row in filter_data:
table_text += f'{row[0]}\t{row[1]}\t{row[2]}\t{row[3]}\t{row[4]}\t{row[5]}\t{row[6]}\t{row[7]}\n'
table.config(text=table_text)
keyword_label = tk.Label(window, text='关键字:')
keyword_label.pack(side='left')
keyword_entry = tk.Entry(window)
keyword_entry.pack(side='left')
filter_button = tk.Button(window, text='筛选', command=filter_table)
filter_button.pack(side='left')
window.mainloop()
```
运行以上代码后,会弹出一个窗口,显示当前库存小于安全库存的备件信息,并且可以使用筛选功能按照关键字筛选信息。
阅读全文