在MFC中对Excel的一些操作
首先要在程序中加载CExcel.h和CExcel.cpp文件,这里面包装了很多函数和对Excel文件的操作,下面所有程序中的m_excel都是类CExcel的对象,如:
private:
_Application pApp;
Workbooks pBooks ;
_Workbook pBook ;
Worksheets pSheets ;
_Worksheet pSheet;
Range pRange;
Interior pInterior;
FontPtr pFont;
////////////////////////////////////////////////////////////////////////////////////////////////////////////
首先在BOOL CVCExcelApp::InitInstance()之中,int nResponse = dlg.DoModal()语句之后加入如下代码:
if
(CoInitialize(NULL)==0)
//初始化COM库
{
AfxMessageBox(
"初始化COM失败!"
);
exit
(1);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////
使用Excel模板来新建一个excel文件,并保存在指定的地址上
UpdateData();//外部有对话框,此时可以将对话框中数据拷贝给与对话框绑定的变量
CString modPath = _T("C:\\Users\\军\\Desktop\\excel.xls");//模板所在的地址
CString strName = m_fileName + _T(".xlsx");//新建的Excel文件的文件名
CString pathName = m_saveAddr + strName;//新建的Excel文件的保存地址
//启动Excel服务
CoInitialize(NULL);
if (!m_execl.pApp.CreateDispatch(_T("Excel.Application"), NULL))
{
AfxMessageBox(_T("创建Excel服务失败!"));
return;
}
m_execl.pApp.put_Visible(FALSE);//设置Excel文件不打开
m_execl.pBooks.AttachDispatch(m_execl.pApp.get_Workbooks(), TRUE);
m_execl.pBook.AttachDispatch(m_execl.pBooks.Add((_variant_t)modPath), TRUE);
//加载模板Excel文件
m_execl.pSheets.AttachDispatch(m_execl.pBook.get_Worksheets(), true);//加载sheet页面
m_execl.pSheet.AttachDispatch(m_execl.pSheets.get_Item(_variant_t("Sheet1")), true);
//将新建的Excel文件保存到指定的地址中,此时保存在pathName地址中
m_execl.pSheet.SaveAs(pathName, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing);
//释放Excel实例
//释放对象
m_execl.pRange.ReleaseDispatch();
m_execl.pSheet.ReleaseDispatch();
m_execl.pSheets.ReleaseDispatch();
m_execl.pBook.ReleaseDispatch();
m_execl.pBooks.ReleaseDispatch();
//退出程序
m_execl.pApp.Quit();
//pApp一定要释放,否侧程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候回出错
m_execl.pApp.ReleaseDispatch();
注:本程序里面的Excel文件后缀名为.xlsx,这个要依据情况定,有时可能是.xls
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面介绍怎么向指定路径下的Excel文件中写入数据
CoInitialize(NULL);
if (!m_execl.pApp.CreateDispatch(_T("Excel.Application")))
{
MessageBox(_T("创建Excell服务失败!"));
exit(1);
}
m_execl.pApp.put_Visible(FALSE);
m_execl.pBooks.AttachDispatch(m_execl.pApp.get_Workbooks(), true);
//打开要写数据的Excel文件,其中excelPath为该Excel文件的保存路径
m_execl.pBook.AttachDispatch(m_execl.pBooks.Open(excelPath, vtMissing, vtMissing,vtMissing,
vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing, vtMissing,
vtMissing, vtMissing, vtMissing,vtMissing));
m_execl.pSheets.AttachDispatch(m_execl.pBook.get_Worksheets(), true);
m_execl.pSheet.AttachDispatch(m_execl.pSheets.get_Item(_variant_t("sheet1")), true);
m_execl.pRange.AttachDispatch(m_execl.pSheet.get_Cells(), true);
//获得Excel文件中已经使用了的行数和列数
//得到该Excel文档中已经使用了的列数
m_execl.pRange = m_execl.pSheet.get_UsedRange();
m_execl.pRange = m_execl.pRange.get_Columns();
long icul = m_execl.pRange.get_Count();
//得到Excel文档中已经使用了的行数
m_execl.pRange = m_execl.pSheet.get_UsedRange();
m_execl.pRange = m_execl.pRange.get_Rows();
long iRow = m_execl.pRange.get_Count();
long iRows = iRow + 1;//这里当我们要写数据时,都是从已经使用了的下一行开始写数据,所以要将已经使用的行数+1来得到下一行
for (int c = 1; c <= icul; )//这里我是使用了CExcel类中自带的写数据的函数
{
m_execl.PutValue(c, iRows, strNum);//c表示要写数据的列,iRow表示要写数据的行,strNum表示写入的字符串,这里是CString型
c++
}
/////////////////////////下面是较一般的写数据的方便
m_pRang.SetItem(_variant_t((
long
)1),_variant_t((
long
)1),_variant_t(
"数学系研究生课程统计"
)); //往第一行第一列的单元格中写数据
m_pRang.SetItem(_variant_t((
long
)2),_variant_t((
long
)1),_variant_t(
"课程名"
)); //往第二行第一列的单元格中写数据
//加载已经使用的单元格
m_execl.pRange.AttachDispatch(m_execl.pSheet.get_UsedRange());
//水平对齐:默认=1,居中=-4108,左=-4131,右=-4152
//垂直对齐:默认=2,居中=-4108,左=-4160,右=-4107
m_execl.pRange.put_HorizontalAlignment(_variant_t((long)-4108));
m_execl.pRange.put_VerticalAlignment(_variant_t((long)-4108));
m_execl.pSheet.ReleaseDispatch();
m_execl.pSheets.ReleaseDispatch();
m_execl.pBook.ReleaseDispatch();
m_execl.pBooks.ReleaseDispatch();
//退出程序
m_execl.pApp.Quit();
m_execl.pApp.ReleaseDispatch();
在MFC中对Excel的一些操作的更多相关文章
- vbs中对excel的常用操作
使用QTP自动化测试中,用到对excel的读写操作,这里把一些常用对excel操作的方法进行了归纳,总结.(对excel格式设置的常用操作这里没有进行总结.) Function DataToExcel ...
- 在没安装OFFICE的服务器SSIS中进行EXCEL的ETL操作!
由于OFFICE 2010的安装包比较庞大,如果仅仅为了在服务器中实现操作EXCEL,完全没有必要安装整个OFFICE,是否可以不装OFFICE也实现与OFFICE文件的互相操作呢?答案是肯定的,在S ...
- MFC中使用ADO进行数据库操作
参考FROM:http://hi.baidu.com/sunkanghome/item/e1fda510b3186359f1090ee2 数据库与数据库编程: 当前各种主流数据库有很多,包括Oracl ...
- MFC中的CString类使用方法指南
MFC中的CString类使用方法指南 原文出处:codeproject:CString Management [禾路:这是一篇比较老的资料了,但是对于MFC的程序设计很有帮助.我们在MFC中使用字符 ...
- python中使用xlrd、xlwt操作excel表格详解
python读excel——xlrd 这个过程有几个比较麻烦的问题,比如读取日期.读合并单元格内容.下面先看看基本的操作: 首先读一个excel文件,有两个sheet,测试用第二个sheet,shee ...
- 报表中的Excel操作之Aspose.Cells(Excel模板)
原文:报表中的Excel操作之Aspose.Cells(Excel模板) 本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件.这个组件的强大之处,就不多说,对于我们的报表总是会有导 ...
- C#中对Excel进行操作
工作中要处理一批数据,主要是处理从别处导出来的Excel表格(大概有一千多行,三十多列),拿到表格对Excel表格进行分析,按照一定的规则进行拆分成为一万多行的数据:首先这个需求要用程序进行处理的背景 ...
- 【转】经典!python中使用xlrd、xlwt操作excel表格详解
最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究&q ...
- python中的excel操作
一. Excel在python中的应用 存测试数据 有的时候大批量的数据,我们需要存到数据库中,在测试的时候才能用到.测试的时候就从数据库中读取出来.这点是非常重要的! 存测试结果 二. Excel中 ...
随机推荐
- 高性能缓存系统Memcached在ASP.NET MVC中应用
在Memcached中实体类型未经序列化不能在Memcached中缓存,因此需要对实体类进行处理,才能缓存下来. Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库 ...
- javascript 调试 & console.table()
通过console.table()打印数组.对象 一般我们都是通过console.log()打印数组或对象,但console.table()打印数组.对象更直观: console.table(empi ...
- tvtk管线技术、数据集与数据加载
管线技术也称流水线技术(Pipeline)每个对象只实现相对简单的任务,整个管线进行复杂的可视化处理在tvtk中分为可视化管线和图形管线 可视化管线(Visualization Pipeline):将 ...
- java面试笔试题大汇总
第一,谈谈final, finally, finalize的区别. 最常被问到. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以 ...
- tomcat6 高并发配置 与优化
server.xml配置 1. <Connectorport="8080"protocol="HTTP/1.1" 2. maxThreads=&quo ...
- Django之Apps源码学习
先了解下官方文档的介绍 Django包含了一个已经安装应用的注册表,这个注册表存储着配置信息以及用来自省,同时也维护着可用模型的列表. 这个注册表就是apps,位于django.apps下,本质上是一 ...
- node.js代理设置
1.设置代理 npm config set proxy=http://proxy.tencent.com:8080 设置代理服务器,比如:npm config set proxy=http://127 ...
- Django升级1.9.6出现的中文本地化bug
Error日志: Error opening file for reading: Permission denied ERROR Internal Server Error: / Traceback ...
- git push The requested URL returned error: 403 Forbidden while accessing
错误提示信息: error: The requested URL returned error: Forbidden while accessing https://github.com/xingfu ...
- String 类的函数实现
#include<iostream> //#include<string> using namespace std; class Strings { public: Strin ...