VC中ListCtrl控件中数据导出为CSV文件的问题

请问使用VC中ListCtrl控件显示表格数据,然后将ListCtrl控件中所有数据导出为CSV文件?表头也要导出到CSV文件的首行中。分已加!分又加!当然是取LISTC... 请问使用VC中ListCtrl控件显示表格数据,然后将ListCtrl控件中所有数据导出为CSV文件?表头也要导出到CSV文件的首行中。
分已加! 分又加!

当然是取LISTCTRL中的数据存为CSV文件,没你想得那么复杂。

2L,我出200分就是要你们帮我设计算法,嘿嘿。
展开
 我来答
ohyourdog
2010-09-09 · TA获得超过821个赞
知道小有建树答主
回答量:298
采纳率:50%
帮助的人:365万
展开全部
不知道你哪点不会。我提几个关键函数吧。
csv文件其实就是txt文件,只是每个格子用“,”逗号分隔,你把csv转为txt文件,打开看就知道了。
所以往csv里写东西的函数为:
CStdioFile m_file;
CString filePath = "D:\\TEST.CSV";
char cMsg[] = "aa,bb,cc,dd,ee";
if(m_file.Open((LPCTSTR)filePath,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite|CFile::typeText))
{
m_file.SeekToEnd();
m_file.WriteString((LPCTSTR)cMsg);
m_file.WriteString("\n");
m_file.Close();
}

上面的代码为测试过可以写。
这个问题解决后,读就不用说了吧,WriteString改为ReadString就可以了,是读一行,读出来的字符串会是以逗号分隔,你就做字符串解析就可以了。推荐你用这个方法strtok(),用指定字符分割字符串最好用了。自己查查。

接下来就是一个读listctrl数据的问题了。我也简单的说下吧。
表头:只能死插入了。一般表头都是死的。你在initial函数里写表头的时候同时也把他写到csv里了。因为我没找到获取表头的方法。。。
DWORD dwStyle= m_list.GetExtendedStyle();
dwStyle|= LVS_EX_FULLROWSELECT; //add extra dwStyle attrubites uses |= .
dwStyle|= LVS_EX_GRIDLINES;
m_list.SetExtendedStyle(dwStyle);
m_list.InsertColumn( 0, "第一列", LVCFMT_LEFT,233,0);
m_list.InsertColumn( 1, "第二列", LVCFMT_LEFT,110,1);
再用上面的WriteString写“第一列,第二列”这个CString。你要动态弄得话就全弄成变量,还要用循环去判断。算法我就不帮你设计了。
表里的内容,用 CString text = m_list.GetItemText(0,0);就是获得第一列第一行的格子里面的值。也是用循环去写算法实现拼装字符串,记得用“,”分隔,然后写进csv。

从csv读也是一样的,只是反过来而已,这里就不赘述了。

写程式的乐趣就在于设计算法。我把实现方法告诉你了,自己去设计下算法吧。
藤原子大雄
2017-12-14 · TA获得超过7195个赞
知道大有可为答主
回答量:6977
采纳率:82%
帮助的人:1738万
展开全部
不知道你哪点不会。我提几个关键函数吧。
csv文件其实就是txt文件,只是每个格子用“,”逗号分隔,你把csv转为txt文件,打开看就知道了。
所以往csv里写东西的函数为:
CStdioFile m_file;
CString filePath = "D:\\TEST.CSV";
char cMsg[] = "aa,bb,cc,dd,ee";
if(m_file.Open((LPCTSTR)filePath,CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite|CFile::typeText))
{
m_file.SeekToEnd();
m_file.WriteString((LPCTSTR)cMsg);
m_file.WriteString("\n");
m_file.Close();
}

上面的代码为测试过可以写。
这个问题解决后,读就不用说了吧,WriteString改为ReadString就可以了,是读一行,读出来的字符串会是以逗号分隔,你就做字符串解析就可以了。推荐你用这个方法strtok(),用指定字符分割字符串最好用了。自己查查。

接下来就是一个读listctrl数据的问题了。我也简单的说下吧。
表头:只能死插入了。一般表头都是死的。你在initial函数里写表头的时候同时也把他写到csv里了。因为我没找到获取表头的方法。。。
DWORD dwStyle= m_list.GetExtendedStyle();
dwStyle|= LVS_EX_FULLROWSELECT; //add extra dwStyle attrubites uses |= .
dwStyle|= LVS_EX_GRIDLINES;
m_list.SetExtendedStyle(dwStyle);
m_list.InsertColumn( 0, "第一列", LVCFMT_LEFT,233,0);
m_list.InsertColumn( 1, "第二列", LVCFMT_LEFT,110,1);
再用上面的WriteString写“第一列,第二列”这个CString。你要动态弄得话就全弄成变量,还要用循环去判断。算法我就不帮你设计了。
表里的内容,用 CString text = m_list.GetItemText(0,0);就是获得第一列第一行的格子里面的值。也是用循环去写算法实现拼装字符串,记得用“,”分隔,然后写进csv。

从csv读也是一样的,只是反过来而已,这里就不赘述了。

写程式的乐趣就在于设计算法。我把实现方法告诉你了,自己去设计下算法吧。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lileyear
2010-09-13 · TA获得超过1499个赞
知道小有建树答主
回答量:1291
采纳率:0%
帮助的人:911万
展开全部
这种什么都不会,等着人家把饭送到嘴里的低能儿,不值得浪费时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
屋哥
2010-09-04 · TA获得超过1057个赞
知道小有建树答主
回答量:1282
采纳率:0%
帮助的人:546万
展开全部
用VC实现把数据存为CSV文件那是很方便的.
所以我想,你是不会取LISTCTRL中的数据吧.
如果是这样,就HI我吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式