pyqt5将下拉列表中的内容放到表格中并导出成Excel
时间: 2024-01-10 10:02:15 浏览: 133
将数据从excel表中导出到qt的下拉列表框(QComboBox)中
可以使用PyQt5中的QTableWidget和openpyxl库来实现将下拉列表中的内容放到表格中并导出成Excel。下面是一个简单的示例代码:
```python
import openpyxl
from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QComboBox, QPushButton
from PyQt5.QtCore import Qt
app = QApplication([])
# 创建表格
table = QTableWidget()
table.setColumnCount(3)
table.setRowCount(3)
# 添加下拉列表和按钮
for i in range(3):
combo_box = QComboBox()
combo_box.addItem("选项1")
combo_box.addItem("选项2")
combo_box.addItem("选项3")
table.setCellWidget(i, 0, combo_box)
export_button = QPushButton("导出")
export_button.setProperty("row", i)
export_button.clicked.connect(lambda: export_data(table))
table.setCellWidget(i, 2, export_button)
# 导出数据到Excel
def export_data(table):
row = app.sender().property("row")
combo_box = table.cellWidget(row, 0)
value = combo_box.currentText()
cell_value = QTableWidgetItem(value)
table.setItem(row, 1, cell_value)
workbook = openpyxl.Workbook()
worksheet = workbook.active
for i in range(table.rowCount()):
for j in range(table.columnCount()):
item = table.item(i, j)
if item is not None:
value = item.text()
worksheet.cell(row=i+1, column=j+1, value=value)
else:
widget = table.cellWidget(i, j)
if isinstance(widget, QComboBox):
value = widget.currentText()
else:
value = widget.text()
worksheet.cell(row=i+1, column=j+1, value=value)
workbook.save("data.xlsx")
table.show()
app.exec_()
```
在这个示例中,我们创建了一个包含三行三列的表格,每一行都有一个下拉列表和一个导出按钮。点击导出按钮后,程序将选中的下拉列表内容放到表格中,并将整个表格导出为Excel文件。
阅读全文