使用MFC读写Excel
_Application m_ExlApp;
//组件服务器的各个classes
_Workbook m_ExlBook;
Workbooks m_ExlBooks;
_Worksheet m_ExlSheet;
Worksheets m_ExlSheets;
// LPDISPATCH lpDisp;
Range m_ExlRge, usedRange;
if
(!m_ExlApp.CreateDispatch(
"Excel.Application"
,NULL))
{
AfxMessageBox(
"创建Excel服务失败!"
);
return
;
}
//设置为可见
m_ExlApp.SetVisible(TRUE);
///////////////////下面得到应用程序所在的路径///////////////////
CString theAppPath,theAppName;
char
Path[MAX_PATH];
GetModuleFileName(NULL,Path,MAX_PATH);
//得到应用程序的全路径
theAppPath=(CString)Path;
theAppName=AfxGetApp()->m_pszAppName;
theAppName+=
".exe"
;
//把最后的文件名去掉
int
length1,length2;
length1=theAppPath.GetLength();
length2=theAppName.GetLength();
theAppPath.Delete(length1-length2,length2);
////////////////////////////////////////////////////////////////
COleVariant covOptional((
long
)DISP_E_PARAMNOTFOUND, VT_ERROR);
// Get the Workbooks collection so that you can add a new workbook
m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks());
// 得到Workbooks
m_ExlBook = m_ExlBooks.Add(covOptional);
// 得到Workbook
// m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks(),TRUE);
// m_ExlBook.AttachDispatch(m_ExlBooks.Add((_variant_t)TempPath),TRUE);//加载EXCEL模板
m_ExlSheets.AttachDispatch(m_ExlBook.GetSheets(),TRUE);
//加载Sheet页面
//添加新的Sheet页面
m_ExlSheets.Add(vtMissing,vtMissing,_variant_t((
long
)1),vtMissing);
//删除第二个Sheet页面
m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((
long
)2)),TRUE);
m_ExlSheet.Delete();
//把第一个Sheet页面的名字改变为TestSheet
m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((
long
)1)),TRUE);
m_ExlSheet.SetName(
"TestSheet"
);
///////合并第一行单元格A1至D1//////
//加载要合并的单元格
m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t(
"A1"
),_variant_t(
"D1"
)),TRUE);
m_ExlRge.Merge(_variant_t((
long
)0));
////////设置表格内容////////
m_ExlRge.AttachDispatch(m_ExlSheet.GetCells(),TRUE);
//加载所有单元格
m_ExlRge.SetItem(_variant_t((
long
)1),_variant_t((
long
)1),_variant_t(
"数学系研究生课程统计"
));
m_ExlRge.SetItem(_variant_t((
long
)2),_variant_t((
long
)1),_variant_t(
"课程名"
));
m_ExlRge.SetItem(_variant_t((
long
)2),_variant_t((
long
)2),_variant_t(
"课时"
));
m_ExlRge.SetItem(_variant_t((
long
)2),_variant_t((
long
)3),_variant_t(
"难度"
));
m_ExlRge.SetItem(_variant_t((
long
)2),_variant_t((
long
)4),_variant_t(
"教学方式"
));
m_ExlRge.SetItem(_variant_t((
long
)3),_variant_t((
long
)1),_variant_t(
"泛函分析"
));
m_ExlRge.SetItem(_variant_t((
long
)3),_variant_t((
long
)2),_variant_t(
"60"
));
m_ExlRge.SetItem(_variant_t((
long
)3),_variant_t((
long
)3),_variant_t(
"普通"
));
m_ExlRge.SetItem(_variant_t((
long
)3),_variant_t((
long
)4),_variant_t(
"老师讲课"
));
m_ExlRge.SetItem(_variant_t((
long
)4),_variant_t((
long
)1),_variant_t(
"微分流形"
));
m_ExlRge.SetItem(_variant_t((
long
)4),_variant_t((
long
)2),_variant_t(
"40"
));
m_ExlRge.SetItem(_variant_t((
long
)4),_variant_t((
long
)3),_variant_t(
"变态难"
));
m_ExlRge.SetItem(_variant_t((
long
)4),_variant_t((
long
)4),_variant_t(
"自学"
));
m_ExlRge.SetItem(_variant_t((
long
)5),_variant_t((
long
)1),_variant_t(
"二阶椭圆型方程与方程组"
));
m_ExlRge.SetItem(_variant_t((
long
)5),_variant_t((
long
)2),_variant_t(
"60"
));
m_ExlRge.SetItem(_variant_t((
long
)5),_variant_t((
long
)3),_variant_t(
"很难"
));
m_ExlRge.SetItem(_variant_t((
long
)5),_variant_t((
long
)4),_variant_t(
"讨论"
));
m_ExlRge.AttachDispatch(m_ExlSheet.GetUsedRange());
//加载已使用的单元格
m_ExlRge.SetWrapText(_variant_t((
long
)1));
//设置单元格内的文本为自动换行
//设置齐方式为水平垂直居中
//水平对齐:默认=1,居中=-4108,左=-4131,右=-4152
//垂直对齐:默认=2,居中=-4108,左=-4160,右=-4107
m_ExlRge.SetHorizontalAlignment(_variant_t((
long
)-4108));
m_ExlRge.SetVerticalAlignment(_variant_t((
long
)-4108));
///////设置整体的字体、字号及颜色//////
Font ft;
ft.AttachDispatch(m_ExlRge.GetFont());
ft.SetName(_variant_t(
"宋体"
));
//字体
ft.SetColorIndex(_variant_t((
long
)11));
//字的颜色
ft.SetSize(_variant_t((
long
)12));
//字号
///////////设置标题字体及颜色//////////
m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t(
"A1"
),_variant_t(
"D1"
)));
ft.AttachDispatch(m_ExlRge.GetFont());
ft.SetBold(_variant_t((
long
)1));
//粗体
ft.SetSize(_variant_t((
long
)13));
ft.SetColorIndex(_variant_t((
long
)2));
CellFormat cf;
cf.AttachDispatch(m_ExlRge.GetCells());
//////////////设置底色/////////////////
Interior it;
it.AttachDispatch(m_ExlRge.GetInterior());
it.SetColorIndex(_variant_t((
long
)11));
//标题底色
////表格内容的底色////
m_ExlRge.AttachDispatch(m_ExlSheet.GetRange(_variant_t(
"A2"
),_variant_t(
"D5"
)));
it.AttachDispatch(m_ExlRge.GetInterior());
it.SetColorIndex(_variant_t((
long
)15));
//////////////为表格设置边框/////////////
Range UnitRge;
CString CellName;
for
(
int
i=1;i<=4;i++)
{
for
(
int
j=1;j<=4;j++)
{
CellName.Format(
"%c%d"
,j+64,i);
//单元格的名称
UnitRge.AttachDispatch(m_ExlRge.GetRange(_variant_t(CellName),_variant_t(CellName)));
//加载单元格
//LineStyle=线型 Weight=线宽 ColorIndex=线的颜色(-4105为自动)
UnitRge.BorderAround(_variant_t((
long
)1),_variant_t((
long
)2),_variant_t((
long
)-4105),vtMissing);
//设置边框
}
}
//释放对象(相当重要!)
m_ExlRge.ReleaseDispatch();
m_ExlSheet.ReleaseDispatch();
m_ExlSheets.ReleaseDispatch();
m_ExlBook.ReleaseDispatch();
m_ExlBooks.ReleaseDispatch();
//m_ExlApp一定要释放,否则程序结束后还会有一个Excel进程驻留在内存中,而且程序重复运行的时候会出错
m_ExlApp.ReleaseDispatch();
//退出程序 m_ExlApp.Quit();
使用MFC读写Excel的更多相关文章
- MFC vs2012 Office2013 读写excel文件
近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...
- C# 使用 NPOI 库读写 Excel 文件(转载)
NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼 容xls 和 xlsx.官网提供了一份Examples,给出了 ...
- Python3.4如何读写Excel
在python3.x(散仙使用的版本是python3.4)里,我们应该如何操作excel. 首先在python3.4里,我们可以使用新的python类库,来支持3.x之后的读写excel 针对 03版 ...
- 用Python读写Excel文件(转)
原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...
- 使用NPOI读写Excel、Word
NPOI 是 POI 项目的 .NET 版本.POI是一个开源的Java读写Excel.WORD等微软OLE2组件文档的项目. 使用 NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 ...
- 【原创】.NET读写Excel工具Spire.Xls使用(1)入门介绍
在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E ...
- 【原创】.NET读写Excel工具Spire.Xls使用(2)Excel文件的控制
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
- 【原创】.NET读写Excel工具Spire.Xls使用(3)单元格控制
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
- 【原创】.NET读写Excel工具Spire.Xls使用(4)对数据操作与控制
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
随机推荐
- 使用下拉列表框<select>标签,节省空间
下拉列表在网页中也常会用到,它可以有效的节省网页空间.既可以单选.又可以多选.如下代码: 讲解: 1.value: 2.selected="selected": 设置selecte ...
- ubuntu下apache与php配置
实验环境 uname -a Linux tomato 4.4.0-34-generic #53-Ubuntu SMP Wed Jul 27 16:06:39 UTC 2016 x86_64 x86_6 ...
- Specified VM install not found: type Standard VM, name jdk1.6.0_05
重装系统换了jdk,之前jdk用的1.6,现在改成1.7了.但是更新之后发现ant打包用不了了,报错 Specified VM install not found: type Standard VM, ...
- Open vSwitch在openstackHavana概述
最近再看Open vSwitch一些东西,我认为openstack官网上对这一块做了一些了解,所以就把这一块翻译出来以供参考,英语不好,翻译得很粗糙. Open vSwitch插件是最有名的核心插件之 ...
- N3292系列资料之RTC介绍
N3292系列资料之RTC介绍 1 RTC特性 Ø 拥有时间计数器(秒,分,时)和日历计数器,用来计算时间 Ø 绝对定时功能(秒,分,时,日,月,年) Ø 相对定时功能 Ø 支持12小时/24小时模式 ...
- 文件操作-php
<?php /* 建立缓存 可以用文件长时间保存数据 文件是以liunux为模型的 在Windows下只能获取file ,dir unknow linux 下可以获取block char dir ...
- JS 单击复制,复制后变为已复制
这段代码是在新浪网站上找到的.先放出CSS代码: .focus a.arrow,.card_con4 li i,.cm1_menu_wrap a.cm1_menu_box,.cm1_img span, ...
- [前端笔记]第一篇:html
什么是 HTML? HTML 是用来描述网页的一种语言.HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (mark ...
- 学生选课系统数据库SQL语句考试题
一. 设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表( ...
- Java中关键字super与this的区别
一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对象里面会有一个父类对象.怎么去引 ...