VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 2627|回复: 9

[求助] VC读取EXCEL一个单元格多行文本,如何分行.

[复制链接]
40_avatar_middle
在线会员 发表于 2015-9-3 11:48:26 | 显示全部楼层 |阅读模式
3驿站币
    已知一个单元格里有多行文本如下:
     

     
     几行文本者没有规律,如何把这个单元格的数数读取出来,并写进mfc 的下拉列表控件..
QQ图片20150903114615.png

最佳答案

查看完整内容

去看我发的那个帖子,上面有个CMyExcel类,使用里面的函数GetItemText(1, 1),就行了。 至于分行开,我认为检测里面换行符“\n”,来实现分开。




上一篇:求教,怎么判断文件是调试版本还是发布版本?
下一篇:请问两个类中的控件变量如何交互读取啊
47_avatar_middle
在线会员 发表于 2015-9-3 11:48:27 | 显示全部楼层
去看我发的那个帖子,上面有个CMyExcel类,使用里面的函数GetItemText(1, 1),就行了。
至于分行开,我认为检测里面换行符“\n”,来实现分开。
40_avatar_middle
ico_lz  楼主| 发表于 2015-9-4 14:16:29 | 显示全部楼层
顶...............
40_avatar_middle
ico_lz  楼主| 发表于 2015-9-5 13:41:07 | 显示全部楼层
忧郁的鱼 发表于 2015-9-4 20:56
去看我发的那个帖子,上面有个CMyExcel类,使用里面的函数GetItemText(1, 1),就行了。
至于分行开,我认 ...

我现在已经可以读取单元格的数据了,,

     单元格里有三行文本,这三行文本是另一个软件跟据采集的数据自己动生成的(生成格式不能更改了,  即不能说更成,  第一行文本\n     或都其它格式),也就是内容不固定,有可能是三行,也有可能是四行文本,    更不能在程序里判断文本内容.

请问 "\n" ,应该加在什么地方呢,  我又如何判断单元格内的一行文本结束呢?
47_avatar_middle
在线会员 发表于 2015-9-5 14:38:28 | 显示全部楼层
xnj 发表于 2015-9-5 13:41
我现在已经可以读取单元格的数据了,,

     单元格里有三行文本,这三行文本是另一个软件跟据采集的数据 ...

你这个文本既然是不在一行的,那么每行结尾应该有个换行符吧,你去检测这个换行符,检测到就往表里面写呗

评分

参与人数 1驿站币 +3 热心值 +3 收起 理由
51_avatar_small Syc + 3 + 3 很给力!

查看全部评分

40_avatar_middle
ico_lz  楼主| 发表于 2015-9-5 15:32:32 | 显示全部楼层
忧郁的鱼 发表于 2015-9-5 14:38
你这个文本既然是不在一行的,那么每行结尾应该有个换行符吧,你去检测这个换行符,检测到就往表里面写呗

在  EXCEL 的单元格里,文本显示是多行  ,VC里读出后,转到 CString后,就变成了一个整体了,中间并没有换行符,

如一某一个单元格里有二行文本:      
             第一行文本
             第二行文本

读到VC里就变成了:  第一行文本第二行文本


47_avatar_middle
在线会员 发表于 2015-9-5 16:25:50 | 显示全部楼层
xnj 发表于 2015-9-5 15:32
在  EXCEL 的单元格里,文本显示是多行  ,VC里读出后,转到 CString后,就变成了一个整体了,中间并没有换行 ...

不可能的 肯定有换行符,你用AfxMessageBox弹出这个文本,看看是一行还是多行
40_avatar_middle
ico_lz  楼主| 发表于 2015-9-5 17:50:35 | 显示全部楼层
忧郁的鱼 发表于 2015-9-5 16:25
不可能的 肯定有换行符,你用AfxMessageBox弹出这个文本,看看是一行还是多行

,,,我的测试程序如下,,,,VS2010 编译
   

SheetToTxt - 副本.rar

113.28 KB, 下载次数: 4

51_avatar_middle
online_admins 发表于 2015-9-5 20:49:32 | 显示全部楼层
xnj 发表于 2015-9-5 17:50
,,,我的测试程序如下,,,,VS2010 编译

你不是说“现在已经可以读取单元格的数据了”吗?
对读取来的字符串进行查找,看看里面有没有 \r 或者 \n,如果有的话就是回车换行了
40_avatar_middle
ico_lz  楼主| 发表于 2015-9-6 19:45:35 | 显示全部楼层
Syc 发表于 2015-9-5 20:49
你不是说“现在已经可以读取单元格的数据了”吗?
对读取来的字符串进行查找,看看里面有没有 \r 或者 \ ...

多谢老大,及网友忧郁的鱼的帮助,现在问题解决了.
      问题点总结:
            1,   从EXCEL里读取数据到转换成 CString 这个过程没有问题.
            2,   转换成  CString  成后,在程序里断点调试 CString 对象里看不到换行符 \n
            3,    能够用 Find 方法从CString  查找出 \n   ,说明文本里是有换行的.
            4,    把 CString 对象内容放到  CEdit  却又显示不了多行(其实这个才是一直坑住我的原因)
            5,    上面第4条的原因是:  CEdit 不支持(VS2010)  \n  换行,  却支持  \r\n   换行.
            6,    用替换方法把CString 对象里的   \n    替换成   \r\n  ,问题就随之解决.


您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

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

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

GMT+8, 2019-5-21 17:51

Powered by Discuz! X3.4

© 2009-2019 cctry.com

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