使用python 编写一个界面,能够读取excel表格,可以对读取的数据进行添加、删除、修改、查询
时间: 2024-01-27 19:04:47 浏览: 81
好的,下面是一个简单的Python界面程序,可以读取Excel表格,并且可以对表格中的数据进行添加、删除、修改和查询。
首先,我们需要安装一些必要的库。这里我们使用PyQt5作为GUI库,使用xlrd库来读取Excel表格:
```
pip install PyQt5 xlrd
```
然后,我们可以开始编写程序。以下是完整的代码:
```python
import sys
import xlrd
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QHBoxLayout, QWidget, QPushButton, QLineEdit, QLabel
class ExcelEditor(QMainWindow):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle('Excel编辑器')
self.setGeometry(100, 100, 800, 600)
# 设置表格
self.table = QTableWidget()
self.table.setColumnCount(3)
self.table.setHorizontalHeaderLabels(['姓名', '年龄', '性别'])
self.table.setEditTriggers(QTableWidget.NoEditTriggers)
# 设置按钮
self.addRowBtn = QPushButton('添加行')
self.delRowBtn = QPushButton('删除行')
self.modifyBtn = QPushButton('修改')
self.searchBtn = QPushButton('查询')
# 设置输入框和标签
self.nameLabel = QLabel('姓名:')
self.nameEdit = QLineEdit()
self.ageLabel = QLabel('年龄:')
self.ageEdit = QLineEdit()
self.genderLabel = QLabel('性别:')
self.genderEdit = QLineEdit()
# 设置布局
self.toolbar = QHBoxLayout()
self.toolbar.addWidget(self.addRowBtn)
self.toolbar.addWidget(self.delRowBtn)
self.toolbar.addWidget(self.modifyBtn)
self.toolbar.addWidget(self.searchBtn)
self.inputLayout = QHBoxLayout()
self.inputLayout.addWidget(self.nameLabel)
self.inputLayout.addWidget(self.nameEdit)
self.inputLayout.addWidget(self.ageLabel)
self.inputLayout.addWidget(self.ageEdit)
self.inputLayout.addWidget(self.genderLabel)
self.inputLayout.addWidget(self.genderEdit)
self.mainLayout = QVBoxLayout()
self.mainLayout.addWidget(self.table)
self.mainLayout.addLayout(self.toolbar)
self.mainLayout.addLayout(self.inputLayout)
self.centralWidget = QWidget()
self.centralWidget.setLayout(self.mainLayout)
self.setCentralWidget(self.centralWidget)
# 绑定事件
self.addRowBtn.clicked.connect(self.addRow)
self.delRowBtn.clicked.connect(self.delRow)
self.modifyBtn.clicked.connect(self.modifyRow)
self.searchBtn.clicked.connect(self.searchRow)
# 读取Excel表格
self.loadExcel('data.xlsx')
def loadExcel(self, filename):
book = xlrd.open_workbook(filename)
sheet = book.sheet_by_index(0)
# 设置表格行数
self.table.setRowCount(sheet.nrows)
# 将数据填充到表格中
for row in range(sheet.nrows):
name = QTableWidgetItem(sheet.cell(row, 0).value)
age = QTableWidgetItem(str(sheet.cell(row, 1).value))
gender = QTableWidgetItem(sheet.cell(row, 2).value)
self.table.setItem(row, 0, name)
self.table.setItem(row, 1, age)
self.table.setItem(row, 2, gender)
def addRow(self):
# 获取输入框中的数据
name = self.nameEdit.text()
age = self.ageEdit.text()
gender = self.genderEdit.text()
# 在表格中添加新行
row = self.table.rowCount()
self.table.insertRow(row)
self.table.setItem(row, 0, QTableWidgetItem(name))
self.table.setItem(row, 1, QTableWidgetItem(age))
self.table.setItem(row, 2, QTableWidgetItem(gender))
# 清空输入框
self.nameEdit.clear()
self.ageEdit.clear()
self.genderEdit.clear()
def delRow(self):
# 获取当前选中的行
rows = set()
for item in self.table.selectedItems():
rows.add(item.row())
# 删除选中的行
for row in sorted(rows, reverse=True):
self.table.removeRow(row)
def modifyRow(self):
# 获取当前选中的行
rows = set()
for item in self.table.selectedItems():
rows.add(item.row())
# 如果有多行被选中,则只修改第一行
row = sorted(rows)[0]
# 获取输入框中的数据
name = self.nameEdit.text()
age = self.ageEdit.text()
gender = self.genderEdit.text()
# 修改表格中的数据
self.table.setItem(row, 0, QTableWidgetItem(name))
self.table.setItem(row, 1, QTableWidgetItem(age))
self.table.setItem(row, 2, QTableWidgetItem(gender))
def searchRow(self):
# 获取输入框中的数据
name = self.nameEdit.text()
# 在表格中查找数据
for row in range(self.table.rowCount()):
if self.table.item(row, 0).text() == name:
self.table.selectRow(row)
break
if __name__ == '__main__':
app = QApplication(sys.argv)
editor = ExcelEditor()
editor.show()
sys.exit(app.exec_())
```
在这个程序中,我们创建了一个名为ExcelEditor的类,它继承自QMainWindow,用于显示窗口和界面组件。在构造函数中,我们创建了一个表格控件、四个按钮、三个输入框和三个标签,并设置了它们的布局。我们还通过xlrd库读取了Excel表格,并将数据填充到表格中。
在addRow、delRow、modifyRow和searchRow方法中,我们分别实现了添加、删除、修改和查询操作。其中,添加操作会在表格中添加新行,并将输入框中的数据填充到表格中;删除操作会删除选中的行;修改操作会修改选中的行;查询操作会在表格中查找指定的数据,并选中该行。
最后,在main函数中,我们创建了一个QApplication对象,并将ExcelEditor的实例作为主窗口进行显示。
阅读全文