1、本科毕业论文(20 届).net环境下通用数据管理模块dll设计所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 .net环境下通用数据管理模块dll设计摘 要基于Windows操作系统的Microsoft Office办公软件,在微软公司的大力开发与推广下,已经融入我们生活的各个角落。而我们日常生活中常用的三大组件:文字处理软件Microsoft Office Word、电子表格软件Microsoft Office Excel以及演示文稿软件Microsoft Office PowerPoint,更是成为了一个标准。当然,Office还包括其他一些软件,
2、如小型数据库Microsoft Office Access、绘图软件Microsoft Office Visio等。其独特的存储方式和复杂的结构,在让其他人望其项背独领风骚的同时也常常令开发人员和新手感觉无从下手。其中,Excel因为具有强大的数据表现和处理能力以及较低的入门资格,使得其成为最受欢迎的电子表格软件,广泛的应用在各个领域。因此,根据这一情况与实际需求,仔细的研究与分析了在VS2010中使用C# .net对Excel表格数据的操作的方法与原理 1,COM组件法、OLEDB和NPOI组件。在.net环境下通过对常用的Excel操作的研究,最终将封装成dll(动态数据链接库)以方便其他
3、人的使用。关键词:Office;.Net;Excel;操作;封装;DllThe Design of Dll for General Data Management Module in .Net EnvironmentAbstractMicrosoft Office software, based on Windows operating system, because of the development and popularization of The Microsoft, has blend in our life. And there are three major component
4、s in our daily life: The Word Processing Software (Microsoft Office Word)、The Spreadsheet Software(Microsoft Office Excel) and The Presentation Software (Microsoft Office PowerPoint), which have become a standard. Of course, Office also include some other software, like The small database(Microsoft
5、Office Access)、The Drawing software(Microsoft Office Visio) and so on. Its unique way of storing and complex structure, not only become the number one in the World but also bring some difficulties for the developer and the novice. Because Excel perform a powerful data processing ability and lower en
6、try qualification, make it the most popular spreadsheet software, widely used in different field. So, according to this situation and the actual demand, we carefully research and analyze the method and principle of using C# .net to operate the Excel table data in VS 2010,COM components、OLEDB and NPO
7、I components. Research on the Excel operation in the .NET environment, will eventually be packaged into Dll(Dynamic Link Library) to facilitate the other person.Keywords:Office;.Net;Excel ;Operation;Packaged;Dll目 录1 引言 .11.1 课题背景及意义 .12 EXCEL文件结构的分析 .13 开发中所用到的技术及方法 .33.1 组件软件 技术 .33.2 开发中使用的技术 .33.
8、2.1 COM组件技术 .33.2.2 NPOI组件技术 .33.2.3 OLEDB技术 .43.3 研究 方法 .43.3.1 使用COM组件 .43.3.2 使用OLEDB .53.3.3 使用NPOI组件 .54 具体开发操作 .54.1 COM组件的开发 .64.1.1 COM组件的引用 .64.1.2 COM组件的使用 .74.1.3 COM组件的操作 .84.1.3.1 打开与新建 .84.1.3.2 保存与另存为及关闭 .94.1.3.3 对单元格的操作 .104.1.3.4 对工作表的操作 .114.1.3.5 对行和列的操作 .124.1.3.6 生成图表 .134.1.3.
9、7 插入图片 .144.2 NPOI组件的开发 .144.2.1 NPOI组件的引用 .154.2.2 NPOI组件的使用 .154.2.3 NPOI组件的操作 .154.2.3.1 打开与新建 .154.2.3.2 保存与另存为及关闭 .164.2.3.3对单元格的操作 .174.2.3.4 对工作表的操作 .184.2.3.5 对行和列的操作 .194.2.3.6 插入图片 .194.2.3.7 使用公式 .204.3 OLEDB的开发 .205 测试 .225.1 COM组件的测试 .225.2 NPOI组件的测 试 .326 结论(结束语) .41主要参考文献 .42致 谢 .4311
10、 引言在微软推出新一代Office Microsoft Office 2007,不仅仅是从格式上将.doc、.xls、.ppt 等格式更换为.docx、.xlsx、.pptx,更以其更加友好的界面、更加简单的操作以及更加稳定的系统,成为大势所趋。而Excel,集文字、数据、图形等一体具有强大的数据管理与表现能力,是微软office软件包的重要组成部分之一 2。以其强大的功能和友好的用户界面受到广泛的应用 3,它也是公认的功能最强大、最受欢迎的电子表格软件。C#,是由微软公司推出的一种基于.net框架的高级程序设计语言,是C和C+语言的一种升级计算机编程语言 4。.net是微软的新一代技术平台,
11、一个.net应用程序运行于.net Framework之上。本文将在.net环境下使用C#对Excel文档进行一定的开发操作与功能封装。1.1 课题背景及意义在Office 2007 更优秀的存储、更强大的功能的浪潮下,取代Office 2003已经成为了必然。在未来的生活、学习、工作中Office 2007及以后的版本的使用将会更加的受欢迎。而在今日Microsoft Office被人们广为接受之际,Excel几乎是每个人必会的工具。在企业中,由于Excel具有强大的数据表现能力和处理能力,以及它极低的使用成本和良好的易用性,使得其在中小型企业信息化过程中产生极其重要的作用,同时也使得目前绝
12、大多数应用系统都离不开与Excel报表进行交互。企业可以借助 Excel软件的强大功能,以便对报表做出进一步的修改、分析、打印输出等后期处理。所以,一般的企业软件不得不和Excel表格打交道。同时,在 .net开发中,经常与各种各样的数据库系统打交道,但是用户可能对这些数据库不熟悉,一些人更熟悉对Excel表格的操作,所以他们更希望转化成对Excel的操作。同时,也可以利用 Excel强大的数据操作与处理能力。目前,对 Excel进行操作的方法多种多样,各个方法都有自己优劣。这就使得一般开发者在选择处理方法的时候可能难以抉择或者选择的方式不合适导致产品在使用的过程中让用户不太满意。 本课题,在
13、.net环境下对Excel表格的多种操作方法进行研究,并在其中寻找最优的处理方式,以便给后来者提供一种新的更好的方式供开发者参考,并可提供给初涉者一个简单使用的演示工具。2 EXCEL文件结构的分析Excel是Office软件包的重要组件之一,在这里采用官方的称呼来进行阐释。工作簿,即Workbook,简单说工作簿就是后缀名为.xslx或.xsl的文件。它是存储和处理数据的文件。工作表,即Sheet,它是显示和分析数据的地方。行,即Row ,左边标1,2,3代表的就是第多少行。同理,列,即Column,用A,B,C表示第多少列。单元格,即Cell ,这是我们经常打交道的,被网格分隔开来的一个一
14、个的矩形框。2通常默认的工作表是3个,显然一个工作簿可以有很多工作表,但是它的数目还是要受内存的限制。工作表的大小也不是无限的,它有1048577行,第一行被占用了,所以我们在最下面看到的行号是1048576。同理,它有16385列,能被我们使用的有16384列,最后一列列号为XFD(如果有兴趣的话,可以使用ctrl + 方向键去查看验证)。其他还有一些图表,宏表。故,很容易得出一个工作表总过会有1048576*16384个单元格。由一个或多个单元格组成的Range也是我们经常见到的,在COM组件中很多操作都由Range 参与或直接完成。综上所述,我们基本可以直观的表示为(图 1):W o r
15、 k b o o kS h e e tC o l u m nR o wC e l l多个多个多个多个多个图 1: Excel文档结构图Excel、Word等都是微软发展的OLE (Object Linking and Embedding) Compound Document,即所谓的复合文件。以Excel 文档为例,Excel可以存储多种格式的资料如图片、图表、方程式这是因为复合文件是建立在,一种可以在同意文档资料流中存储多种格式的资料的OLE 结构化存储之上的(如图 2所示 5)。图 2: OLE复合文件结构3函数是Excel的精华,能够实现数据的分析和计算。公式是用运算符将函数、数据等连接
16、在一起的式子。其中运算符运算符又分为算数运算符、关系运算符公式中需要单元格的地址。引用单元格的地址的地址分为绝对地址和相对地址。绝对地址不随单元格的变化而变化,但是需要在行号和列号之前分别加上一个”$”如$A$4 ;使用相对地址则不用。函数式能够在一定程度上帮助我们更好的进行数据挖掘。3 开发中所用到的技术及方法在开发中我们需要用到很多技术,比如学会.net环境下用C#开发的技术、组件的意义以及COM( Common Object Model)组件的使用技术、NPOI (NPOI 是POI项目的.NET 版本。POI 是一个开源的Java 读写Excel、WORD等文档的项目。)组件的使用技术
17、以及ODBC(Open Database Connectivity)数据的连接技术等等。主要对开发中使用的三种方法所使用到的COM组件技术、NPOI 组件技术以及OLEDB技术进行说明。以下将做出一番简单的介绍。3.1 组件软件技术当软件工程和软件危机的概念提出来之后,随着时代的发展软件危机变得越来越严重。当传统的方法将一个应用程序分成多个模块每个模块保持一定的独立性,无法有效的解决软件危机时,组件软件技术就诞生了。组件软件的思想是庞大的应用程序分解成一些小的、功能相对单一的组件模块 6。组件与组件之间的通信,可以跨机器、跨进程、跨语言甚至于跨平台。这是因为面向对象方法的类库具有封装、多态、继
18、承、重载等特点,能够实现较高的代码复用,而组件软件以此为基础,是面向对象思想的延续。面向对象的优越性在此得到了体现。3.2 开发中使用的技术开发前,需要做充分的准备,对可能用到的知识有一定程度的了解与认识。在这里,将具体介绍在开发中用到的三种方法所使用到的技术。亦即COM技术、NPOI技术及OLEDB技术做出一定程度的介绍。3.2.1 COM组件技术微软的COM组件是一种组件模型的公共的统一的标准。COM,我们一般认为是Common Object Model即公共对象模型,而官方则视为Component Object Model即组件对象模型。因此,COM不仅提供了组件之间交互的规范,还提供了
19、交互的环境 6。COM组件提供给用户的是,以对象形式封装起来的实体。与用户交互的实体是COM的对象,对象包括属性和方法。属性反映的是对象的性质,这是区别于其他对象的要素。方法是提供给外接使用的接口,客户通过接口来获得对象的服务。COM接口具有这几个特点:二进制性、接口不变性、接口继承性和多态性 6。3.2.2 NPOI组件技术因为Apache的 POI专案,让Java 的开发人员存取Excel档案变得轻松。故,有些人就将4Java中好用的Excel函数库移植到.net环境下或者为.net环境另外开发出一些可以直接存取Excel的函数库。这些就被称之为NPOI 。NPOI对Excel进行读写的主
20、要方法,是按照Excel组织文件的格式规则和方法通过文件流方式来实现,避免了通过OLE方式激活庞大的Excel进程占用太多的资源 7。另一方面,NPOI组件不需要Office的存在,即在不安装Office办公软件时,我们也能使用NPOI组件对Excel文档进行一定的操控。这在一定程度上也可以解决微软的版权问题,避免由微软垄断而带来的风险。NPOI的函数库有七个,分别为:1.NPOI.dll:NPOI的核心函数库;2.NPOI.DDF.dll:NPOI的绘图区读写函数库;3.NPOI.HPSF.dll:NPOI的文件摘要资讯读写函数库;4.NPOI.HSSF.dll:NPOI的Exel文档读写函
21、数库(这是Excel2003版本的, 2007版本的为XSSF)5.NPOI.Util.dll :NPOI 的工具函数库;6.NPOI.POIFS.dll:NPOI的OLE格式存取的函数库;7.ICSharpCode.SharpZipLib.dll:NPOI 的档案压缩函数库。一般而言,我们只需要 NPOI、NPOI.HSSF、NPOI.POIFS以及 NPOI.Util函数库。作为开发人员,还需要NPOI.HSSF.UserModel。3.2.3 OLEDB技术OLEDB,又称为OLE DB或者OLE-DB ,英文为Object Linking and Embedding,Database,
22、是微软公司推出的一个针对不同的数据源的应用程序的接口,即程序可以通过OLEDB连接到数据库。它不仅包括微软的标准数据接口开放数据库连通性(即通常所说的ODBC)的结构化查询语言(即所谓的SQL,Structured Query Language)能力,还具有面向非 SQL数据类型的通路。它是基于COM的数据存储对象,OLEDB的对象主要有数据源对象、阶段对象、行组对象和命令对象。3.3 研究方法准备在Windows平台上分阶段分情况用C#在.net环境VS(Visual Studio)2010编译器上实现对Excel 表格的操作进行研究。先用使用微软提供的COM组件的方法进行研究和分析;然后用
23、不使用COM组件,即用OleDb和NPOI组件分别进行研究和分析。其中,具体实现流程如下。3.3.1 使用COM组件(如图 3)制作或找到现成的C O M 组件添加 C O M 组件 使用 C O M 组件功能 E X C E L 表格即打开 , 关闭 , 插入图片 操作出错处理5图3: 使用COM 组件处理流程图首先,要找到或者通过VS2010 命令提示工具制作出一个Excel组件出来,以便于下一步的开发。然后在开发程序中添加引用并添加命名空间。其次,弄清楚COM组件的操作流程以及操作方法,了解COM组件能实现的功能。再其次,对设计完成的功能操作进行开发与实现,并进行一定的出错处理与内存回收
24、和进程的释放。最后通过具体的Excel 表格数据进行功能的验证。3.3.2 使用OLEDB(如图 4)M i c r o s o f t J e t / A c eE X C E L 表格 D a t a T a b l e连接 读取 S Q L 语句操作出错处理图 4: OLEDB处理流程图首先,用Microsoft.Jet/Ace.Oledb 进行对Excel 表格数据的连接。然后通过一定的方法打开Excel文档并将Excel表格数据读取到DataTable中为后面的操作做好准备。其次,使用SQL语句对DataTable里的数据进行操作实现一定的功能。最后,将数据重新些回Excel表格当中
25、,间接完成对Excel表格的操作。还是要对可以预料到的错误,进行出错处理。3.3.3 使用NPOI组件(如图 5)下载 N P O I 组件 添加 N P O I 组件 使用 N P O I 组件功能 E X C E L 表格出错处理操作图 5: NPOI组件处理流程图和COM组件类似,首先要对NPOI组件有一定的了解,获得一个能满足正常使用的NPOI组件。然后,在程序中添加对NPOI组件的引用及相应的命名空间。其次,对NPOI 组件操作Excel 的方法和能实现的功能有一定认识。最后,设计合理的功能进行开发与实现。用Excel 表格做相应的验证,并对其中出现的问题做出一定的出错处理,以及对计算机Excel文档内存的释放。