pyqt5 tableWidget使用xlsxwriter 导出excel 包括表头
时间: 2024-09-21 22:02:31 浏览: 39
使用pyqt5 tablewidget 单元格设置正则表达式
PyQt5中的TableWidget可以配合pandas库以及openpyxl或xlsxwriter模块将数据导出到Excel文件。下面是一个简单的例子,说明如何使用xlsxwriter导出包含表头的Excel文件:
首先,你需要安装必要的库,通过pip安装:
```bash
pip install pandas xlsxwriter
```
然后,在Python中,你可以这样做:
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem
import pandas as pd
from xlsxwriter import Workbook
class ExportToExcel(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 创建TableWidget
self.table = QTableWidget()
self.table.setColumnCount(3) # 设定列数
self.table.setRowCount(5) # 设定行数
self.table.setHorizontalHeaderLabels(['Name', 'Age', 'Gender']) # 设置表头
# 添加一些示例数据
for i in range(3):
item = QTableWidgetItem(f"Row {i+1}")
self.table.setItem(i, 0, item)
self.table.setItem(i, 1, QTableWidgetItem(str(i*10)))
self.table.setItem(i, 2, QTableWidgetItem("Male" if i % 2 == 0 else "Female"))
# 函数用于保存数据到Excel
def export_to_excel():
data = self.table.model().data(self.table.indexes()) # 获取数据
df = pd.DataFrame(data, columns=self.table.horizontalHeaderItem(i).text() for i in range(self.table.columnCount()))
book = Workbook('output.xlsx')
writer = pd.ExcelWriter(book, engine='xlsxwriter') # 创建Excel writer
df.to_excel(writer, sheet_name='Sheet1') # 写入数据
writer.save() # 保存工作簿
# 按钮点击事件,导出数据
btn_export = QPushButton('Export to Excel')
btn_export.clicked.connect(export_to_excel)
layout = QVBoxLayout()
layout.addWidget(self.table)
layout.addWidget(btn_export)
self.setLayout(layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = ExportToExcel()
ex.show()
sys.exit(app.exec_())
```
在这个例子中,当用户点击“Export to Excel”按钮时,程序会将TableWidget的数据转换成pandas DataFrame,并使用xlsxwriter将其写入名为“output.xlsx”的Excel文件中。
阅读全文