pyqt5实现按钮按下保存QTableWIdget数据为excel程序
时间: 2023-04-04 19:03:49 浏览: 180
QT QaxWidget,读写excel文件
可以通过以下代码实现:
```python
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QFileDialog
from openpyxl import Workbook
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table = QTableWidget(self)
self.table.setGeometry(50, 50, 400, 200)
self.table.setColumnCount(3)
self.table.setRowCount(2)
self.table.setHorizontalHeaderLabels(['姓名', '性别', '年龄'])
self.table.setItem(0, 0, QTableWidgetItem('张三'))
self.table.setItem(0, 1, QTableWidgetItem('男'))
self.table.setItem(0, 2, QTableWidgetItem('20'))
self.table.setItem(1, 0, QTableWidgetItem('李四'))
self.table.setItem(1, 1, QTableWidgetItem('女'))
self.table.setItem(1, 2, QTableWidgetItem('22'))
self.save_btn = QPushButton('保存', self)
self.save_btn.setGeometry(200, 270, 100, 30)
self.save_btn.clicked.connect(self.save_data)
def save_data(self):
file_path, _ = QFileDialog.getSaveFileName(self, '保存文件', '', 'Excel 文件 (*.xlsx)')
if file_path:
wb = Workbook()
ws = wb.active
for row in range(self.table.rowCount()):
for col in range(self.table.columnCount()):
item = self.table.item(row, col)
if item is not None:
ws.cell(row=row+1, column=col+1, value=item.text())
wb.save(file_path)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序创建了一个包含两行三列的 QTableWidget,每个单元格都有数据。当用户点击保存按钮时,程序会弹出一个文件对话框,让用户选择保存的文件路径和文件名。然后程序会使用 openpyxl 库创建一个 Excel 文件,并将 QTableWidget 中的数据写入到 Excel 文件中。最后程序会保存 Excel 文件到用户指定的路径。
阅读全文