实现功能:使用PySide6进行工具开发,通过TableWidget实现跨行列粘贴Excel表格内容。列数是固定的(因为列标题是固定的),而只根据粘贴内容动态增加行数。如果粘贴的内容超出表格列范围,超出的部分会被忽略。
难点:在 PySide6 中,QTableWidget 默认不支持跨行或跨列粘贴内容。要实现跨行列粘贴功能,需要自定义粘贴逻辑。可以通过重写 QTableWidget 的 dropEvent 或 paste 方法来实现。
示例代码如下:

from PySide6.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QMainWindow, QMenu
from PySide6.QtCore import Qt, QMimeData
class CustomTableWidget(QTableWidget):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 启用拖放和粘贴功能
self.setAcceptDrops(True)
self.setSelectionMode(QTableWidget.SelectionMode.ContiguousSelection)
def paste(self):
"""重写粘贴方法,支持从 Excel 复制的内容"""
clipboard = QApplication.clipboard()
mime_data = clipboard.mimeData()
if mime_data.hasText():
# 获取剪贴板中的文本内容
text = mime_data.text()
# 按行分割(Excel 复制的内

最低0.47元/天 解锁文章
1969

被折叠的 条评论
为什么被折叠?



