一.添加数据

这里介绍的是最平常的添加方法,当然也有很多其他比较好的方法。这里要非常注意添加顺序。先上代码:

//导入excel文档中的内容到list中
CoInitialize(NULL);
if (!m_excel.pApp.CreateDispatch(_T("Excel.Application"), NULL))
{
AfxMessageBox(_T("创建Excel服务失败!"));
return;
}
m_excel.pApp.SetVisible(FALSE);//设置Excel不打开
m_excel.pBooks.AttachDispatch(m_excel.pApp.GetWorkbooks(), TRUE);
m_excel.pBook.AttachDispatch(m_excel.pBooks.Open(m_dateAddress, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing));
m_excel.pSheets.AttachDispatch(m_excel.pBook.GetWorksheets(), true);
m_excel.pSheet.AttachDispatch(m_excel.pSheets.GetItem(_variant_t(_T("Sheet1"))), true);
m_excel.pRange.AttachDispatch(m_excel.pSheet.GetCells(), true); //得到当前excel中已经使用的行数和列数
m_excel.pRange = m_excel.pSheet.GetUsedRange();
m_excel.pRange = m_excel.pRange.GetColumns();
long icolumn = m_excel.pRange.GetCount();
m_excel.pRange = m_excel.pSheet.GetUsedRange();
m_excel.pRange = m_excel.pRange.GetRows();
long iRow = m_excel.pRange.GetCount();
//为listcontrol添加列
for (int j = ; j < icolumn; j++)
{
CString str = m_excel.GetCString(j + , );
m_dateList.InsertColumn(j, str);//从第0列开始添加
m_dateList.SetColumnWidth(j, );
}
//往list中添加数据
CString s1;
for (int i = ; i < iRow; i++)
{
s1 = m_excel.GetCString(, i + ); //给list控件添加行
m_dateList.InsertItem(i, s1);//因为前面添加列的时候已经占用了一行,所以这里添加行是从第1行开始添加
for (int j = ; j <= icolumn; j++)
{
CString str = m_excel.GetCString(j, i + );
m_dateList.SetItemText(i - , j - , str);//从第0行第1列开始
}
}
m_excel.Quit();//关闭excel服务

这里说一下步骤:

1.添加列;

2.添加行;

3.添加数据。

一般添加列和行都是从0开始添加,在本程序中因为在添加列的时候就已经占了一行,所以在添加行的时候就是从第一行开始,即程序中的i=1,这里主要取决于程序的需要。然后在添加数据的时候要注意,标题行不算作一行,所以一般是从第0行开始,而在添加行的时候就会占用一列,这里的列就需要算上,所以添加的列往往是从第1列开始。

二.删除所有的内容以及列表

这里可以使用m_dateList.DeleteAllItems();和m_dateList.DeleteColumn(i);

前者是删除所有的内容,后者则是删除所以的列表,但是要注意在删除列表的时候不注意的的话是从第0列开始删除,这样没删除一列,剩下的列就会自动往前面移一步,这样就会造成有的列始终删除不掉,为了避免这种情况,我们可以从最后一列开始删除,这样就不会出现前面的情况。

例:

//判断此时list Control控件是否为空,不为空则清空
if (m_dateList.GetItemCount())
{
//得到表头的列数
int num = m_myListCtrl.GetHeaderCtrl()->GetItemCount();
for (int i = num - ; i >= ; i--)
{
m_dateList.DeleteColumn(i);//删除指定的列
}
m_dateList.DeleteAllItems();//删除所有内容
}

按照上面的操作后就可以完成清空list Control的内容和表头了

list control控件的一些操作的更多相关文章

  1. OpenCV 通过 MFC 的 Picture Control 控件操作图像

    假设希望对显示在MFC Picture Control 控件里的图像进行操作,比方画线画点之类的,能够利用 OpenCV 结合 MFC 本身的鼠标响应函数来实现. 怎样将图像显示到 Picture C ...

  2. 对话框上动态控件的创建、在Picture Control控件上显示图片

    1  MFC对话框之上的动态控件的创建 对话框上的控件是MFC类的一个具体对象. 当在对话框之上使用静态控件时,可以根据类向导来为每个控件添加消息.响应函数以及变量. 当需要在对话框中动态的创建某个控 ...

  3. MFC Month Calendar Control 控件使用

    在上层软件编程中,往往须要提供一个月历控件让用户选择对应日期或者用此月历控件来强调特定的一天. MFC的 Month Calendar Control 控件自系统升级到 Windows 7 之后,对于 ...

  4. 通过编写串口助手工具学习MFC过程——(七)添加Tab Control控件

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  5. MFC编程 | tab control控件的使用

    因为课程需要,会用到MFC编程,所以讲一些经验总结下,以便日后使用查询. // tab control控件的使用 // 建立一个Cluster窗口,通过tab可以切换成C-Means和Fuzzy C- ...

  6. OpenCV 2.2版本号以上显示图片到 MFC 的 Picture Control 控件中

    OpenCV 2.2 以及后面的版本号取消掉了 CvvImage.h 和CvvImage.cpp 两个文件,直接导致了苦逼的程序猿无法调用里面的显示函数来将图片显示到 MFC 的 Picture Co ...

  7. 在VC++中使用Tab Control控件

    系统环境:Windows 7软件环境:Visual Studio 2008 SP1本次目的:在模态或非模态对话框中使用Tab Control控件,及引申在单/多文档中使用 查阅MSDN文档,对于创建T ...

  8. ASP.NET MVC 枚举类型转LIST CONTROL控件

    在实际应用中,我们经常会用到下拉框.多选.单选等类似的控件,我们可以统称他们为List Control,他们可以说都是一种类型的控件,相同之处都是由一个或一组键值对的形式的数据进行绑定渲染而成的. 这 ...

  9. List Control控件

    List Control控件 显示方式 属性[View]选择成[Report]. 添加成员变量 绑定变量:m_listCtrl 设置值 // 表头添加 m_listCtrl.SetExtendedSt ...

随机推荐

  1. MongoDB学习笔记(三)

    第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载.官网下载地址:http://www.robomo ...

  2. 自制node.js + npm绿色版

    自制node.js + npm绿色版   Node.js官网有各平台的安装包下载,不想折腾的可以直接下载安装,下面说下windows平台下如何制作绿色版node,以方便迁移. 获取node.exe下载 ...

  3. 树的广度优先遍历和深度优先遍历(递归非递归、Java实现)

    在编程生活中,我们总会遇见树性结构,这几天刚好需要对树形结构操作,就记录下自己的操作方式以及过程.现在假设有一颗这样树,(是不是二叉树都没关系,原理都是一样的) 1.广度优先遍历 英文缩写为BFS即B ...

  4. Binary Tree Level Order Traversal II(层序遍历2)

    Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left ...

  5. CSS布局之--各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  6. 成功实现在VS2017下编译含<pthread.h>的代码:

    VS2017配置使用#<pthread.h> https://blog.csdn.net/cry1994/article/details/79115394(原来SystemWow64里面存 ...

  7. 爬虫之proxy(代理)

    proxy简介 proxy即为代理,我们爬虫的时候肯定会有频繁访问某一网站的情况,这个时候有些服务器会识别到我们是非正常访问,就会把我们的IP禁掉,这个时候就需要用代理了. 就好比现实生活中,我需要向 ...

  8. Mysql访问权限问题:Access denied for user 'root'@'XXX' (using password: YES)

    System.Data.Entity.Core.ProviderIncompatibleException: An error occurred accessing the database. Thi ...

  9. 微信对账单处理-PHP

    最近要做支付对账,即检查第三方支付与数据库中账单是否一一对应,涉及到微信对账单的处理,成功时,微信账单接口返回数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款 ...

  10. eclipse maven 构建简单springmvc项目

    环境:eclipse Version: Oxygen.3a Release (4.7.3a) 创建maven Project项目,目录结构 修改工程的相关编译属性 修改pop.xml,引入spring ...