python 写一个界面实现excel表的导入,并对表进行添加、删除、修改、查询,并设置背景图,支持高级查询语法
时间: 2024-02-03 20:01:57 浏览: 59
python实现数据写入excel表格
好的,我可以为您提供一个基于Python的GUI程序,使用它可以实现对Excel表格的导入、添加、删除、修改、查询等操作,并且支持高级查询语法和背景图设置。
首先,我们需要安装三个Python库:`openpyxl`、`tkinter`和`pandas`。`openpyxl`用于处理Excel文件,`tkinter`用于创建GUI界面,`pandas`用于处理数据。
可以使用以下命令进行安装:
```
pip install openpyxl
```
```
sudo apt-get install python3-tk
```
```
pip install pandas
```
接下来,我们就可以编写Python代码实现Excel表格的导入、添加、删除、修改、查询功能了。
这里提供一个简单的示例代码,您可以根据自己的需求进行修改和扩展。
```python
import tkinter as tk
from tkinter import filedialog, messagebox
from tkinter.ttk import Combobox
from PIL import ImageTk, Image
import pandas as pd
import re
class ExcelEditor:
def __init__(self, root):
self.root = root
self.root.title("Excel Editor")
# 添加导入按钮
self.import_button = tk.Button(self.root, text="导入", command=self.import_excel)
self.import_button.pack()
# 添加添加按钮
self.add_button = tk.Button(self.root, text="添加", command=self.add_data)
self.add_button.pack()
# 添加删除按钮
self.delete_button = tk.Button(self.root, text="删除", command=self.delete_data)
self.delete_button.pack()
# 添加修改按钮
self.edit_button = tk.Button(self.root, text="修改", command=self.edit_data)
self.edit_button.pack()
# 添加查询按钮
self.search_button = tk.Button(self.root, text="查询", command=self.search_data)
self.search_button.pack()
# 添加查询框
self.search_entry = tk.Entry(self.root)
self.search_entry.pack()
# 添加查询条件选择框
self.condition_combobox = Combobox(self.root, values=["等于", "不等于", "包含", "不包含"])
self.condition_combobox.pack()
self.condition_combobox.current(0)
# 添加数据展示框
self.data_text = tk.Text(self.root, height=10, width=50)
self.data_text.pack()
# 初始化Excel文件
self.workbook = None
self.sheet = None
# 设置背景图
self.set_background()
def import_excel(self):
# 弹出文件选择框
file_path = filedialog.askopenfilename()
# 加载Excel文件
self.workbook = pd.read_excel(file_path, engine='openpyxl')
self.sheet = self.workbook
# 清空数据展示框
self.data_text.delete("1.0", tk.END)
# 在数据展示框中显示数据
self.data_text.insert(tk.END, str(self.sheet) + "\n")
def add_data(self):
# 在Excel表格中添加数据
new_data = {"列1": "新数据1", "列2": "新数据2", "列3": "新数据3"}
self.sheet = self.sheet.append(new_data, ignore_index=True)
# 保存Excel文件
self.sheet.to_excel("data.xlsx", index=False)
# 在数据展示框中显示数据
self.data_text.insert(tk.END, str(new_data) + "\n")
def delete_data(self):
# 在Excel表格中删除数据
self.sheet = self.sheet[:-1]
# 保存Excel文件
self.sheet.to_excel("data.xlsx", index=False)
# 在数据展示框中显示数据
self.data_text.delete("1.0", tk.END)
self.data_text.insert(tk.END, str(self.sheet) + "\n")
def edit_data(self):
# 在Excel表格中修改数据
self.sheet.loc[self.sheet["列1"] == "数据1", "列2"] = "修改后的数据2"
# 保存Excel文件
self.sheet.to_excel("data.xlsx", index=False)
# 在数据展示框中显示数据
self.data_text.delete("1.0", tk.END)
self.data_text.insert(tk.END, str(self.sheet) + "\n")
def search_data(self):
# 在Excel表格中查询数据
keyword = self.search_entry.get()
condition = self.condition_combobox.get()
if condition == "等于":
result = self.sheet[self.sheet == keyword].dropna(how="all")
elif condition == "不等于":
result = self.sheet[self.sheet != keyword].dropna(how="all")
elif condition == "包含":
result = self.sheet[self.sheet.astype(str).apply(lambda x: x.str.contains(keyword, na=False)).any(axis=1)]
elif condition == "不包含":
result = self.sheet[~self.sheet.astype(str).apply(lambda x: x.str.contains(keyword, na=False)).any(axis=1)]
# 在数据展示框中显示数据
self.data_text.delete("1.0", tk.END)
self.data_text.insert(tk.END, str(result) + "\n")
def set_background(self):
# 设置背景图
image_path = "background.jpg"
try:
image = Image.open(image_path)
image = image.resize((600, 400))
self.background_image = ImageTk.PhotoImage(image)
except:
messagebox.showerror("错误", "背景图加载失败!")
background_label = tk.Label(self.root, image=self.background_image)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
if __name__ == "__main__":
root = tk.Tk()
editor = ExcelEditor(root)
root.mainloop()
```
以上代码实现了一个高级的Excel表格编辑器,包括导入、添加、删除、修改、查询等功能,并且支持高级查询语法和背景图设置。您可以在此基础上进行修改和扩展,以满足您的需求。
阅读全文