一.添加数据

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

//导入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. OC实现带弹跳动画按钮的界面控制器view

    很多应用都有带弹跳动画发布界面,这里用一个 UIViewController 实现这种效果,外界只要 modal出不带动画这个控制器就可以实现 #import "BSPublishVC.h& ...

  2. linux上安装redis的踩坑过程2

    昨天在linux上安装redis后马上发现了其它问题,服务器很卡,cpu使用率上升,top命令查看下,原来有恶意程序在挖矿,此程序入侵了很多redis服务器,马上用kill杀掉它 然后开始一些安全策略 ...

  3. Django之AppConfig源码学习

    class AppConfig(object) 这个基类描述了一个Django应用以及它的配置信息. 属性: name:django应用的完整python路径,eg.'django.contrib.a ...

  4. web端创建地图

    1>在首部引入标签 <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main111 ...

  5. UE4中如何使物体始终朝向摄像头?

    要使物体始终正面朝向摄像头需要用到一个关键节点:Find Look at Rotation 其中Start连接需要旋转的物体位置矢量,Target连接摄像头位置矢量 最后设置SetActorRotat ...

  6. JS跨域:1.解决方案之-SpringMVC拦截器

    一 拦截器代码 package com.wiimedia.controller; import java.util.List; import javax.servlet.http.HttpServle ...

  7. jqery对于select级联操作

    问题:今天在做一个需求的时候,有一个级联操作也就是选中下拉框的一列就显示对对应的数据 处理:我在做级联的时候在option的列里面绑定click的事件发现这个事件行不通:查资料发现select触发的是 ...

  8. Java多线程:synchronized的可重入性

    从Java多线程:线程间通信之volatile与sychronized这篇文章中我们了解了synchronized的基本特性,知道了一旦有一个线程访问某个对象的synchronized修饰的方法或代码 ...

  9. break-跳出内循环

    i = 1 j = 1 while i <= 10: print('第%d个碗' % i) while j <= 10: if j == 5: break else: print('这是内 ...

  10. java float double精度为什么会丢失?浅谈java的浮点数精度问题 【转】

    由于对float或double 的使用不当,可能会出现精度丢失的问题.问题大概情况可以通过如下代码理解: public class FloatDoubleTest { public static vo ...