登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 计算机类 > 软件工程 > 正文

基于MSWORD的报表生成系统的设计与实现毕业论文

 2020-02-23 18:22:20  

摘 要

现在许多的办公系统都内嵌有报表生成功能,可以在办公流程结束之后自动生成一份填写了完整数据的Excel表格或者Word文档。本文研究在Windows平台上使用实现应用程序对Microsoft办公软件Word的控制,实现软件自动生成文档报表的功能。

论文主要研究了在Microsoft提供的集成开发环境Visual Studio平台下为一套办公系统专门设计一套使之自动生成报表的方法。在这个研究过程中包含了诸如COM组件的工作原理与制作方法,OLE相关技术,数据库存储访问方法,VSTO外接应用程序方法,.Net Framework、数据结构及算法、操作系统方面的知识等,并构想了报表系统应用的推广,使之能够脱离一套既定系统而广泛应用。

研究结果表明:COM组件或.Net Framework框架下的程序集的支持使得Windows应用程序在Word协同工作方面有着非常高的效率与非常出色的效果。综合使用上述内容中研究出的方法,够非常有效地实现报表自动化生成的功能,让办公变得更加简单高效。

本文的特色:总结了一些比较常见的报表生成技术,并且给出了其中一套的具体实现方法,设计了一套广泛适用型的报表生成系统,可以实现电子文档的自动化生成。

关键词:Word;自动化;COM;

Abstract

Now many office systems are embedded with report generation capabilities to automatically generate a Excel form or Word document filled with complete data after the office process is over. This paper studies the use of Windows application to control Microsoft office software Word, and realizes the function of software automatically generating document reports.

This paper mainly studies the method of designing a set of automatic report forms for an office system under the Visual Studio platform of integrated development environment provided by Microsoft. In the process of this research, it includes the working principle and making method of COM components, OLE related technology, database storage access method, VSTO external application method,.Net Framework, data structure and algorithm, operating system knowledge and so on, and conceives the popularization of the application of report system, so that it can be separated from the one. It is widely used to set up the established system.

The research results show that the support of the COM component or the assembly of the.Net Framework framework makes the Windows application have a very high efficiency and excellent effect on the collaboration of Word. Using the methods mentioned in the above contents, it is very effective to realize the function of automatic report generation and make the office more simple and efficient.

The characteristics of this paper are summarized in this paper, some common report generation techniques are summarized, and a set of specific implementation methods are given. A set of widely applicable report generation system is designed to realize automatic generation of electronic documents.

Key Words:Word;Automation;COM

目 录

第1章 绪论 1

1.1研究背景 1

1.2 研究目的与意义 1

1.3电子报表介绍 1

1.4电子报表自动化技术的发展历程与研究现状 2

1.5 研究主要工作 3

第2章 Word报表自动化的技术核心 4

2.1 Office开发人员API 4

2.2 Windows操作系统进程通信 4

2.3 在不同平台下的各种技术 5

2.3.1 MFC下的对象连接嵌入技术Ole 5

2.3.2 .Net Framework interop程序集 5

2.3.3 .Net Framework VSTO 6

2.4 Word文档自身所支持的自动化实现载体 7

2.4.1 书签 7

2.4.2 公式 7

第3章 Word报表生成系统的实现 9

3.1 报表系统定制与非定制的区别与联系 9

3.2 VBA宏在报表系统实现中的作用 9

3.3 报表生成所属系统的简单介绍 11

3.4 报表系统的几种实现方式 14

3.4.1 硬编码模式 14

3.4.2 模板模式 14

3.5 报表生成需要用到的核心类型库简介 19

3.6 报表生成的核心步骤 21

3.6.1 准备工作 21

3.6.2 核心代码 22

3.6.3 使用.Net VSTO与Spire类型库编写COM组件 27

第4章 模板模式Word报表系统的设计构想 31

4.1 需求分析 31

4.2 系统设计理论 32

4.2.1 系统架构 32

4.2.2 业务逻辑层 32

4.2.3 系统类图构想 33

4.3 第三方组件支持 34

4.3.1 Spire的各种第三方类库 34

4.3.2 AxtiveX控件 DSOFramer 35

4.4 主要功能的实现理论 35

4.4.1 在线模板 36

4.4.2 使用模板/文档统计分析 36

4.4.3 制作模板 37

第5章 总结 39

5.1 结论 39

5.1.1 报表生成方法的总结 39

5.1.2系统仍存在的问题与缺陷 39

5.1.3 对系统未来应用与发展前景的展望 39

5.2 总结 40

附录A 核心VBA宏 42

附A1 书签添加宏 42

附A2 书签寻找宏 42

附A3 公式插入宏 43

附A4 更改书签处变量并刷新运算结果宏 43

附A5 书签删除宏 43

附A6 调用宏宏 44

第1章 绪论

1.1研究背景

早在互联网经济发展以前,各行各业都已确立以报表进行工作汇报的基本形式。而在计算机技术问世之后,办公软件给人们带来的便利使得工作报表大多数都以电子档的形式呈现。但是计算机作为一个使办公行为高度自动化工具,在文档、报表方面并没有提高其高度的自动性,许多的企业仍然是在采取雇佣大量的文员的做法,这样需要的人力成本是非常之高昂的。在很多的大型企业,在文档、报表方面的自动化程度颇高,尤其是例如百度、谷歌、搜狐的互联网企业。但是在大部分中小规模的企业,在这方面的自动化程度尤为之低。以Microsoft的Office办公软件为例,大多数的来自不同厂商出版的Office都或多或少地支持自动化,但是对于非专业的Office使用人员来说,学习Office办公软件中的一些小技巧都显得尤为吃力,更不用说实现自动化的操作。因此,报表生成这一业务流程之余的附属工作在不同级别的企业里自动化程度就显得差异尤其之大。

1.2 研究目的与意义

本次研究目的是得出一套切实可行的在Windows系统下生成基于Word的报表系统实现方案,并将之实装于一个汽车制动模拟系统当中。同时,由这一套系统的实现方案也能推广出在其他办公系统下的报表生成系统的解决方案,可以得到广泛的应用。

同时本次研究还对泛用型的报表系统的设计进行了构想,使得报表系统无需开发人员专门为办公系统量身定制。

1.3电子报表介绍

电子报表顾名思义就是电子档的报表。由于科技的高度发展,计算机技术的普及,传统的手写报表形式已逐渐落伍,现在广为流行的报表生成模式主要有两种——全自动模式以及半自动模式。全自动模式即报表生成的全程过程都不需要工作人员接触报表,报表在业务过程之中或者结束后于办公系统内自动生成,包括报表内的一切变量数据/可变性文字以及其他所有在传统报表制作中极其需要人为操作才能与报表内容相适应的元素全部都能自动生成。半自动模式即工作人员自己制作一套doc模板,在办公结束后需要根据办公过程中的数据或者实际情况手动填写模板中的空白。

理论上而言,电子报表只是一个系统中负责输出工作流程中重要数据、工作结果以及一些结论性信息的手段,它的内容与系统的属性和功能有着密切联系,且其中的输入数据大多数采样于系统输入,其他分析得出的结果数据也是由系统本身运算得出,因此在面对不同的办公系统时,它的具体实现过程也随之而不同,具有高度的多样性。这样一来,电子报表自动化的功能模块大多需要定制完成。全自动模式的电子报表一般可以直接内嵌于系统之中,定制必须由计算机程序开发人员进行,开发过程需要编码。半自动模式的电子报表根据甲方对自动化程度的需求可由开发人员进行也可无开发人员参与,若是由开发人员参与,可能会在系统内增加打开文档/保存文档等基本功能以低程度地提升办公效率,若是没有计算机开发人员的协助,则是单纯地由文员编辑出一份文档模板(dot/dotm等),再由工作人员手动填写这些模板,这属于比较低技术含量的开发。

1.4电子报表自动化技术的发展历程与研究现状

在电子报表自动化方法成型之前,通常的电子档报表都是手动通过手动编辑实现。首先介绍一下它们作用于的报表平台,也就是办公软件,目前在Windows操作系统上主流的办公软件是Microsoft于1985年发行的Office套件,它包含Word、Excel、PowerPoint以及在数据存储方面履行相关功能的Access以及在工程制图中使用较为广泛的Visio等。

在互联网产业发展的初期,软件大多以C/S架构呈现,在办公自动化方面比较有名的几款商用软件有水晶报表、Data Window等[1]。在之后B/S软件直追而上的年代,Jasper和Fast Report则为最为主流的的报表制作软件[1],由于JAVA强大的跨平台性能,因此在Windows系统上也能与Microsoft Office完美契合,在Linux操作系统上亦能配合Libre Office等办公软件展开工作。

其实要说电子报表自动化这一技术的发展,其实历史上鲜有专精于此项目的研究成果。它的发展纯粹是靠各种不同的办公软件厂商推出支持各种不同功能的API接口推动的,说的通俗一点就是虽然人们在”制作出一款更好的办公软件”这个问题上研究得火热,但对”自动化生成报表”这个问题上漠不关心,但是前者的研究上地成果又有意无意地使后者也有所推进。因此随之时间的推移,各大Office办公软件给开发人员开放的API接口、类型库日渐科学、日渐精简也日渐功能强大。当初Office办公软件最初推出之时并没有现如今的书签、目录、批注、页眉页脚等概念,而现如今它们能很好地帮助我们进行办公。

本文仅讨论Windows平台上基于Microsoft Office套件的电子报表自动化技术。可以说到目前为止Windows平台上,Microsoft的Office都是最好的办公软件,甚至可以去掉之一。目前世界上采用的最多是Microsoft最新的VSTO外接应用程序方法,它是一个在VS平台上的工具包,可以利用它在程序中对Office应用程序进行调用,涵盖了Office提供的近乎所有API。这是之前Microsoft办公自动化语言VBA的一种替代版,同时它又与现在Microsoft的C#语言,.Net Framework有着更好的相性,因此在Office编程上有着得天独厚的优势。

由于报表自动化模块与系统本身的业务逻辑有着高度密不可分的关系,目前在市场上没有找到一款具有广泛应用性的电子报表自动生成软件,但这并不意味着普适性的报表自动化系统无法设计、无法实现。首先很多Office软件就支持这样一种功能,还是以Microsoft的Office办公套件为例,Word和Excel支持录制VBA宏的功能,对于开发人员而言这个功能主要的用处是查看代码,对于办公人员而言它的用处是可以实现极其有限的办公自动化,但这显然达无法满足我们日常工作的需求。关于宏录制将在后文进行详细的介绍。

关于报表自动化,目前最为常用的技术支持还是Microsoft的VSTO,目前比较成熟的报表自动化的第三方支持有Spire,它是一套基于.NET Framwork的类型库,包装了需要引入Word类型库文件中的类才能使用的一些操纵word文档的函数,并将需要多步操作的一些功能化作一部来实现。在工程中使用则是以引入Spire的dll来实现。

而现已知的除定制系统报表生成功能之外,最常用的非定制报表自动生成功能就是靠Word本身来实现。Word文档拥有书签和公式功能,因此理论上可以仅仅只通过Word应用程序,通过输入部分初始数据进行整篇文章的报表自动化,但是这样操作起来异常麻烦,尤其当有一些比较复杂的运算存在于报表系统之中时,而且它的作用范围在单文档之内,无法对多文档集中进行统计分析与归纳。

1.5 研究主要工作

首先研究多种技术,在多个平台上实现电子文档报表的自动化生成,对比其优缺点,在MFC平台上运用其中一种方案实现汽车制动模拟系统的报表生成功能模块。

其次构想一套泛用型电子文档模板生成系统,旨在让没有程序编码能力的计算机用户也可根据自己的需求为工作量身定制一套文档自动化模板,并能运用其模板进行高效办公。

第2章 Word报表自动化的技术核心

2.1 Office开发人员API

不论如何,做报表自动化的功能永远离不开一款办公软件,就Microsoft的word而言,Microsoft提供的API接口直接决定了开发人员能够在多大的程度上通过程序设计控制Word文档,实现办公自动化。Office根据不同的软件开发工具、不同的程序设计语言所提供的接口也是不尽相同的,比如在C/C 的程序中我们需要通过类向导引入MSWORD.OLB这一COM组件,而在.Net Framework下进行程序设计则是需要引用Microsoft.Office.Interop.Word程序集的Library获取程序设计所需的API,在两者之中都是以namespace的形式存在。理论上而言,同一个版本的Office提供给不同开发平台/程序语言的API虽在写法、形式上不尽相同,但是最后在调用Word的IL语言、至少汇编语言、机器语言上是一致的。

不管使在哪一种平台上,使用哪一种方法实现办公自动化,其共同特点是通过Office的API来实现对Office各种APP进程,如Word、Excel的创建,然后通过获取其进程句柄得到其内存地址,以内存共享的方式实现进程间通信。

而出于Microsoft之手的Office办公软件对开发人员可谓是极其友好,从应用程序的创建关闭、文档文件的打开保存关闭,Word文档中近乎所有的操作全部都能通过API调用加以实现。

2.2 Windows操作系统进程通信

Windows操作系统对进程通信的支持允许在其平台上运行的应用程序可以互相发送和接收数据已进行协同工作。

进程通信是Windows提供的系统调用之中的一种,包含在Win32 API之中。结合本例简单说明一下其应用原理——Windows应用程序通过Office API向系统请求创建一个Word文档进程,之后通过获取Word文档的Windows窗口程序句柄以实现另外一个应用程序对Word文档中各变量的监控,比如光标位置,Word文档中各项选项的配置(字体、字号等),之后则是通过内存共享的方式实现两个进程之间的信息交流(在开发的系统之中通过API获取另外一个进程的句柄本身就是获得另外一个进程的内存地址)。

在Windows操作系统上运行的所有进程都有唯一进程编号PID,通过打开任务管理器可以通过详细信息对其进行查看。

通常情况下的进程通信需要通过系统调用枚举进程PID,然后获取所需进程的句柄进行进程通信,然而在Ole、.Net框架下利用Word的API进行程序设计可以使得待通信进程直接通过主应用程序进程通过系统调用创建,而系统调用函数可以通过返回值或是实参引用等方式将创建进程的PID直接反馈给著应用程序,因此进程通信无需繁重地通过枚举一个个寻找正确的进程就能实现。关于Ole、.Net等技术的介绍在下文中给出。

2.3 在不同平台下的各种技术

2.3.1 MFC下的对象连接嵌入技术Ole

Ole全称Object Linking and Embedding,中文解释为对象连接嵌入技术。在面向对象编程体系下,所有的应用程序在操作系统之中也被封装为各种类。我们使用某一款应用程序提供的Ole接口,便能通过它来获取应用程序的对象实例,从而达到进程通信来实现应用程序操纵另一个应用程序的目的。在Ole发展的后期Microsoft推出了一种名为COM的新技术,允许来源于不同开发人员的代码以dll的形式进行复用[2]

COM与直接使用dll的不同在于COM组件需要在操作系统中进行注册,且COM支持在任何的程序语言中进行使用,而直接使用dll则并非如此。直接使用dll放入文件所在目录需要使工程开启公共语言运行时(CLR),而使用COM组件只需在源程序中引用一个tli/tlb文件获取在dll对应语言所编写的类型。

2.3.2 .Net Framework interop程序集

作为取代Ole的存在,.Net Framework是一个支持公共语言运行时CRL的平台,所以Word文档的调用在C#语言下需要将所有语言全部翻译为一种类似汇编的中间语言IL。在多应用程序协同工作这一方面,其方法interop也同Ole一样是获取受控目标应用程序的对象实例达到控制目的,但是从应用程序编译、生成以及运行的角度上来看两者有着本质上的区别。如图2.1——

以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图