pyside6:把tablewidget的上的内容导出到excel中,并能选择存储的地方和文件名,且导出的数字没有文本格式,用代码举例
时间: 2023-06-07 21:09:51 浏览: 405
将table数据导出到excel
好的,以下是实现这个功能的代码:
```python
import sys
import csv
from PySide6.QtWidgets import QApplication, QFileDialog, QMainWindow, QTableWidget, QTableWidgetItem
from PySide6.QtGui import QTextCodec
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.table_widget = QTableWidget(self)
self.table_widget.setColumnCount(3)
self.table_widget.setRowCount(3)
for i in range(3):
for j in range(3):
item = QTableWidgetItem(str(i * j))
self.table_widget.setItem(i, j, item)
self.setCentralWidget(self.table_widget)
self.export_action = self.menuBar().addAction("Export")
self.export_action.triggered.connect(self.export_table)
def export_table(self):
options = QFileDialog.Options()
options |= QFileDialog.DontUseNativeDialog
file_name, _ = QFileDialog.getSaveFileName(self, "Export Table", "", "CSV Files (*.csv)", options=options)
if file_name:
with open(file_name, 'w', newline='', encoding='utf-8') as csv_file:
writer = csv.writer(csv_file)
for row in range(self.table_widget.rowCount()):
data = []
for column in range(self.table_widget.columnCount()):
cell_value = self.table_widget.item(row, column).text()
# 移除所有的逗号
cell_value = cell_value.replace(",", "")
# 将内容转换为数字
try:
cell_value = float(cell_value)
except ValueError:
pass
data.append(cell_value)
writer.writerow(data)
if __name__ == "__main__":
# 设置编码为 UTF-8,防止中文乱码
QTextCodec.setCodecForLocale(QTextCodec.codecForName("UTF-8"))
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
```
这个程序创建了一个带有 3 行 3 列的表格,将表格中每个单元格的数字设置为其行数和列数的乘积。菜单栏中有一个 "Export" 选项,可以将表格导出到 CSV 文件中。用户可以选择文件名和存储位置。导出的数字将被写入文件中,而不是被格式化为文本。
阅读全文