Visual C#的Excel编程
摘要:本文介绍了Excel对象、C#中的受管代码和非受管代码,并介绍了COM组件在环境中的使用。
关键词:受管代码;非受管代码;Excel对象;动态连接库
0 引言
Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功能适用于每一个用户,可以想象程序设计是十分复杂的。由于Excel表格的功能强大,又由于几乎每一台机器都安装了它,如果把程序处理的结果放到Excel表格中,这样每一个用户就可以根据自己的需要在Excel中定制自己的打印。这样不仅使得程序设计简单,而且又满足了诸多用户的要求,更加实用了。那么用Visual C#如何调用Excel,如何又把数据存放到Excel表格中?本文就来探讨上述问题的解决办法。
1 Excel对象
微软的Excel对象模型包括了128个不同的对象,从矩形,文本框等简单的对象到透视表,图表等复杂的对象.下面我们简单介绍一下其中最重要,也是用得最多的四个对象。
(1) Application对象。Application对象处于Excel对象层次结构的顶层,表示Excel自身的运行环境。 (2) Workbook对象。Workbook对象直接地处于Application对象的下层,表示一个Excel工作薄文件。
(3) Worksheet对象。Worksheet对象包含于Workbook对象,表示一个Excel工作表。
(4) Range对象。Range对象包含于Worksheet对象,表示Excel工作表中的一个或多个单元格。
2 C#中的受管代码和非受管代码
在公用语言框架内运行的程序为受管代码。受管代码在程序中所有类型都受到严格检查,没有指针,对内存的管理完全由运行系统控制。受控状态下,编写程序更为容易,且更少出错,我们可以花更多的时间在解决实际问题上而不是在计算机语言问题上。相对而言,那些在框架外运行的程序为非受管代码。比如:COM组件、ActiveX组件、Win32 API函数、指针运算等。C#编程中在某些特定情况下,需要运用非受管代码,例如,要利用一个成熟的COM组件,或者调用一个API函数,或者用指针去编写实时/高效程序等。
3 Visual C#中调用Excel的COM组件
一个组件事实上是一个下的DLL,它包含的不仅是运行程序本身,更重要的是包含这个DLL的描述信息(Meta Data,即元数据),而一个COM组件是用其类库(TLB)储存其描述信息。这些COM组件都是非受管代码,要在Visual C#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的组件。所以在用Visual C#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的.类库的转换。
3.1 将Excel的COM组件转换为组件
在项目中打开Add Reference对话框,选择COM栏,之后在COM列表中找到“Microsoft Excel 9.0 Object Library”(Office 2000),然后将其加入到项目的References中即可。Visual C#会自动产生相应的组件文件,以后即可正常使用。
这个转换形成组件不能单独使用,它不过是以前的COM组件的一个外层包装,在中可以通过这个外层包装去发现原来的COM组件并调用其相应的界面函数。所以它必须与原来的COM组件一起起作用。
3.2 Visual C#打开Excel表格
事实上,在C#中使用一个经转换的COM组件和使用任何一个其它组件完全一样。可以用new关键字创建一个经转换的COM组件,然后再像使用任何一个其它C#对象一样使用这个组件对象。
在转换后的组件中定义了一个命名空间Excel,在此命名空间中封装了一个类Application,这个类和启动Excel表格有非常重要的关系,在Visual C#中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:
ication excel = new ication ();//引用Excel对象
-
灵活迁移 激活思维
迁移是一种学习对另一种学习的影响。迁移教学的实质就是让学生运用旧知识探索新知识,发现新规律,不断重组自己的认知结构。因此,在教学时必须充分调动学生的各种积极因素,让他们主动投入到学习活动中去。当然,准备了良好的迁移条件,不等于迁移活动就一定会发生。实践...
-
新课标理念下初中语文教学中存在的一些问题论文
新课标已经颁布并实施几年了,在这几年中,从对教师的培训到课改的实验,不少教育行政部门和一线教师多付出了许多心血。但是,随着新课标改革的深入,在基层教学中也存在一些问题,这些问题有悖于新课标的精神,也阻碍了素质教育的开展,必须引起高度重视。一、刻意标新立异,热...
-
论经济学要研究人的非理性
〔论文关键词〕主流经济学理性非理性[论文摘要〕主流经济学以人是理性的假设为基础,进行数学化的推论,能够解释人的理性经济行为,但不能说明人的不确定条件下的非理性决策行为。近年来,在不确定条件下决定的非理性行为的研究取得了一定进展,把非理性纳入经济研究成...
-
国人枢椎侧方椎弓内固定的解剖学基础
作者:侯黎升,贾连顺,谭军,阮狄克,叶晓健,王人鹏【关键词】,脊柱【Abstract】AIM:ToprovidetheanatomicalbasisforlateralarchscrewfixationinC2vertebraofChinese.METHODS:FiftysevendryC2vertebraofChineseweremeasured.RESULTS:Theparametersobtainedofanteriorpor...