有一个需求不知道如何实现,想请教一下各位大佬能否提供一个思路
python吧
全部回复
仅看楼主
level 9
fly9593 楼主
这是我写的一个桌面应用,使用pyside6实现。窗口分为主窗口和选区窗口(蓝色矩形边框的那个)。程序的作用就是按下快捷键将选区窗口下的屏幕区域截图,然后通过ocr识别并填充到表格中。
选区窗口我是设置了一个系统级的透明窗口,在截图前后隐藏/取消隐藏。我考虑过使用pywebview/Electron那样使用Web技术的桌面框架,但是那种框架构造出来的窗体是浏览器级别的,难以实现透明窗口的功能。
扯得有点远了,目前程序是有一个导入导出功能,目的大概是从xlsx文件导入数据,在这个窗体中编辑,然后导出。
目前我想做一个这样的功能:可以从文件中导入数据,然后以原导入文件为模板,在保留原格式的基础上,导出修改后的数据。
我个人是希望能够做到这种功能:
假如文件中某个单元格的数字被标红,我们导入这个文件,在这个数字前后删除了某些行或添加了一些行,导出,这个数字依然会被标红。
但是我实际修改下来发现这个需求是很难实现的,现在我们的导出功能,是遍历窗体中所有的表格(PySide6中QTableWidget的item对象),收集成列表。也就是说,只能收集表格中显示的数据。
严格来讲,实现这个需求只需要知晓知晓导出数据的原始位置信息,哪些行是没有修改的,哪些行是新增/删除的。
在写入xlsx文件的时候,先在文件的原始位置写入未修改的信息,删除空行,然后插入新增的行(继承下一行的样式信息),这个位置信息只需要精确到行就可以了。
我自己的编程水平不算高,很多问题都是问的ai,因此想请教一下各位大佬有什么思路,任何回复对我来说都是有帮助的,谢谢!
2026年04月13日 09点04分 1
level 9
fly9593 楼主
如果pyside6有类似于vue的双向绑定机制就好了,目前的导出实际上就是遍历一遍item对象
2026年04月13日 09点04分 3
level 12
没有这中要求,
excel用的库是啥,我估计 wincom32 调用excel大概率能保持单元格的样式
用 QTableView + QAbstractTableModel 试试
2026年04月13日 16点04分 4
excel用的库是openpyxl,使用openpyxl的load_workbook方法可以以某个文件作为模板,然后在上面进行修改
2026年04月14日 00点04分
level 9
fly9593 楼主
通义千问给的解决方法是导入的时候使用QTableWidgetItem的UserRole存储用户自定义数据,存储原始位置信息,是否修改,是否新增,是否删除等信息。导出的时候获取这些数据。写到excel的时候,先把数据放到原始位置,再删除空行,然后再插入新增的数据(复制插入行下一行的格式)
2026年04月14日 01点04分 5
1