博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
list control控件的一些操作
阅读量:5126 次
发布时间:2019-06-13

本文共 2488 字,大约阅读时间需要 8 分钟。

一.添加数据

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

//导入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 = 0; j < icolumn; j++)    {        CString str = m_excel.GetCString(j + 1, 0);        m_dateList.InsertColumn(j, str);//从第0列开始添加        m_dateList.SetColumnWidth(j, 50);    }    //往list中添加数据    CString s1;    for (int i = 1; i < iRow; i++)    {        s1 = m_excel.GetCString(1, i + 1); //给list控件添加行        m_dateList.InsertItem(i, s1);//因为前面添加列的时候已经占用了一行,所以这里添加行是从第1行开始添加        for (int j = 2; j <= icolumn; j++)        {            CString str = m_excel.GetCString(j, i + 1);            m_dateList.SetItemText(i - 1, j - 1, 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 - 1; i >= 0; i--)    {    m_dateList.DeleteColumn(i);//删除指定的列    }    m_dateList.DeleteAllItems();//删除所有内容}

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

转载于:https://www.cnblogs.com/pengjun-shanghai/p/5364420.html

你可能感兴趣的文章
Observer 观察者
查看>>
数据库三大范式
查看>>
ap module omap4460 分类: arm-linux-Ub...
查看>>
for each...in,for...in, for...of
查看>>
jquery简介(一)
查看>>
Create ISO library over NFS for XEN server templates
查看>>
JDK版本问题
查看>>
设计模式简介
查看>>
hash一致性
查看>>
Unity3D热更新
查看>>
2D多边形碰撞器优化器
查看>>
[Java多线程]-并发,并行,synchonrized同步的用法
查看>>
前端回答从输入URL到页面展示都经历了些什么
查看>>
用SAXReader解析xml文档【转】
查看>>
【转】父类引用指向子类对象
查看>>
通过winrm使用powershell远程管理服务器
查看>>
python第一百零五天 ---Django 基础 路由系统 URL 模板语言 ORM 操作
查看>>
linux的用户及权限管理详细说明
查看>>
类的变量初始化是直接使用初始化器还是放在构造函数中?
查看>>
微信推送短消息
查看>>