VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 1462|回复: 6

[求助] listctrl 与 excel 的实时数据传递读写

[复制链接]
47_avatar_middle
在线会员 发表于 2015-9-10 18:02:55 | 显示全部楼层 |阅读模式
3驿站币
本帖最后由 忧郁的鱼 于 2015-9-10 18:16 编辑

RT
我在listctrl上面显示一个excel的数据,然后我对listctrl进行了一些操作,比如修改单元格内容,插入删除行列等等

我现在的处理方法是:有一个保存按钮,我按一下,他把excel清空,然后把listctrl的东西都写进去,这样数据大时有点慢。
对于listctrl和excel二者分别的操作,我都会了。

现在的问题是:我如何让我的修改能实时反应在excel中?

比如:
excel中的数据是:三行三列
1 2 3
4 5 6
7 8 9

然后我读入到listctrl中了,这个listctrl我是可以编辑的,我用的网上的listctrlex
读入进来是:
1 2 3
4 5 6
7 8 9

然后,比如我修改了6,改为0
1 2 3
4 5 0
7 8 9

我想让这个修改能实时反映在excel中,这样我就不用整体的覆盖和保存了。

说的简单一点:ListCtrl有没有一个函数可以判断单元格内容是否发生了更改?

求方法

最佳答案

查看完整内容

ListCtrl你若能实现编辑,应该是动态生成了EditCtrl吧,然后你可以在你的EditCtrl显示出来的时候得到他的行列位置,然后在他失去焦点的时候判断字符串有无改变,如果改变了,就执行对应的修改,若没改变,就不做修改。




上一篇:编译ghost出现错误 求帮助
下一篇:关于窗口类注册失败的问题
90_avatar_middle
在线会员 发表于 2015-9-10 18:02:56 | 显示全部楼层
ListCtrl你若能实现编辑,应该是动态生成了EditCtrl吧,然后你可以在你的EditCtrl显示出来的时候得到他的行列位置,然后在他失去焦点的时候判断字符串有无改变,如果改变了,就执行对应的修改,若没改变,就不做修改。
74_avatar_middle
在线会员 发表于 2015-9-10 18:25:25 | 显示全部楼层
首先 關聯 listctrl 的 item change 事件(具體名稱 可能不是這個 太久沒玩mfc 自己找下) 當listctrl中 某個值變化時 觸發你定義的函數A
在你的函數A中 修改 excel (excel 有提供接口 修改指定 行 列 的值 不需要 全部 清空 自己找下 相關api就行)
47_avatar_middle
ico_lz  楼主| 发表于 2015-9-10 23:21:06 | 显示全部楼层
zuiwuchang 发表于 2015-9-10 18:25
首先 關聯 listctrl 的 item change 事件(具體名稱 可能不是這個 太久沒玩mfc 自己找下) 當listctrl中 某個 ...

excel修改指定行列我已经会了。
然后,item change事件,是你当前选择的项改变时触发,比如你先点击了第1行,然后又点击了第2行,这时候会触发这个事件。
可是,这样行吗?
我的意思是,我在listctrl里面修改了哪里,excel也做同样修改。
itemchange事件,貌似不行吧。。。
74_avatar_middle
在线会员 发表于 2015-9-11 17:41:50 | 显示全部楼层
忧郁的鱼 发表于 2015-9-10 23:21
excel修改指定行列我已经会了。
然后,item change事件,是你当前选择的项改变时触发,比如你先点击了第 ...

首先 我發現了我的錯誤 mfc 的clistctrl 似乎沒有提供 某 行列 值 變化時的 回調處理函數(太久沒玩mfc 了)

而且 clistctrl 似乎 也沒提供 直接 編輯 行列(除了首列) 的功能
你應該是 自己 派生了 clistctrl 或者用的其他人的 派生類吧 ...

無論 你是 怎麼 實現 編輯的 一般 最後 都會 調用 類似 CListCtrl::SetItemText 去 修改 CListCtrl 的值
你可以 自己 寫個 MySetItemText 函數 在 MySetItemText 中 首先 更改excel 再 調用 SetItemText 更改 CListCtrl
而在 原代碼中 將 CListCtrl::SetItemText 都改成 你的 childclass::MySetItemText
47_avatar_middle
ico_lz  楼主| 发表于 2015-9-11 20:48:15 | 显示全部楼层
Timo 发表于 2015-9-11 14:53
ListCtrl你若能实现编辑,应该是动态生成了EditCtrl吧,然后你可以在你的EditCtrl显示出来的时候得到他的行 ...

谢谢 解决了 基本上是按照你的方法 不过我是发的消息
在【编辑框控件失去焦点】的时候,把里面的文本地址发消息传出来,然后对话框再处理。
22_avatar_middle
在线会员 发表于 2015-9-12 12:36:19 | 显示全部楼层
数据大时可以用虚表
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2019-5-25 04:18

Powered by Discuz! X3.4

© 2009-2019 cctry.com

快速回复 返回顶部 返回列表