首页 技术 正文
技术 2022年11月20日
0 收藏 301 点赞 2,571 浏览 2039 个字

一.添加数据

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

//导入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的内容和表头了

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,989
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,503
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,348
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,131
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,765
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,842