地震预警及烈度速报信息报告自动生成技术

2016-02-05 07:02:00狄国荣潘章容曾文浩田秀丰张卫东王燕雷正超张磊王韶鹏
地震地磁观测与研究 2016年6期
关键词:速报烈度书签

狄国荣潘章容曾文浩田秀丰张卫东王 燕雷正超张 磊王韶鹏

1) 中国兰州730000甘肃省地震局

2) 中国甘肃746000陇南中心地震台

地震预警及烈度速报信息报告自动生成技术

狄国荣1)潘章容1)曾文浩1)田秀丰1)张卫东1)王 燕1)雷正超2)张 磊2)王韶鹏2)

1) 中国兰州730000甘肃省地震局

2) 中国甘肃746000陇南中心地震台

地震预警系统是一种能够有效减轻地震灾害的新手段。中国目前初步研制了地震预警和烈度速报软件系统,兰州市地震预警示范中心正在实验运行一套软件系统,目前震后利用该系统产出的预警和烈度速报信息报告未实现自动化,本文提出自动产出总结报告软件的研制方案。该软件利用COM技术,调用Word和Excel自动化服务器中的OLE自动化对象,将地震预警和烈度速报信息报告所需文字、图片、表格等信息自动插入,实现文档的自动生成,为震后快速决策节省时间。

地震预警和烈度速报;信息报告自动产出软件;COM技术;OLE自动化对象

0 引言

地震预警系统是一种能够有效减轻地震灾害的新手段,世界上多个国家和地区,如日本、墨西哥、美国等均已研发多个针对特定设施、单个城市甚至更大区域的地震预警系统,有的已经面向公众发布,有的在线测试运行,在减少人员伤亡、减轻人民财产损失及依据系统产出信息进行震后决策方面均发挥了重要作用。中国初步研制了地震预警和烈度速报软件和相应实时数据流、系统测试、信息发布平台,系统目前在线测试运行。兰州市地震预警示范中心正在实验运行一套示范系统。该示范系统由地震预警观测平台、地震预警信息处理技术平台、地震预警信息服务平台组成。地震预警信息处理技术平台主要功能是,依据观测平台数据流产出地震预警和烈度速报等信息,为服务平台提供发布数据,并为震后决策提供依据。但是,该系统震后产出的预警和烈度速报信息分散在不同服务器上,而非整合信息,需要手动从不同服务器下载信息,人工查询并计算所需结果编排整理。手工制作报告文档的时效性较为低下,而震后决策时间紧迫,需要尽量节省报告产出时间。基于此,实现地震预警和烈度速报信息报告的自动化产出,为震后快速决策节省时间。

采用VC++6.0编程,实现文字、图表并茂的Word报告文档自动生成。在VC++6.0环境下,将Microsoft Office安装目录中的MSWORD.OLB和EXCEL.OLB类库导入VC++,利用COM技术编程,在源代码中调用OLE自动化对象来操作Word和Excel。由于地震预警和烈度速报信息报告文档的格式相对固定,采用事先设计好的模板文件,在需插入内容处设置书签变量,通过书签定位和光标跟随相结合的方法,实现特定位置的文字、图表等内容的插入,以减少程序代码,提高程序运行效率(金艳等,2015)。

1 实现原理

在VC++6.0中搭建一个应用程序界面,将制作好的Word模板放在应用程序同级目录下,通过COM技术调用Word和Excel自动化服务器中的OLE自动化对象,如:_Application、_Document、 Range、Selection、Bookmark、InlineShape等,实现从Excel中读取数据,并向Word模板插入所需信息,最终生成地震烈度速报和预警信息Word文档报告。地震预警和烈度速报信息报告自动生成技术原理见图1。

图1 Word报告文档自动生成原理Fig.1 word document autogeneration schematics

2 功能实现

2.1 创建OLE自动化对象

(1)在VC++6.0开发环境下,建立基于对话框的应用程序,命名为EEWDocOutput,在应用程序类CEEWDocOutputApp的InitInstance()成员函数中,通过调用AfxOleInit()函数初始化COM(朱敏,2005)。核心代码如下

(2)导入Word和Excel中的OLE自动化对象。打开VC++6.0的View菜单下ClassWizard向导,在Automation标签页下通过add class找到Office安装目录下的Word和Excel类型库文件MSWORD.OLB、EXCEL.EXE,从中添加需要用到的对象类。

Word对象模型是一个等级结构,主要有:Application对象、Document对象、Range对象、Selection对象、Bookmark对象(吴杰,2009),见图2。

Application对象表示Word应用程序,是其他对象的父级。用户可以利用其属性或方法来控制应用程序的运行行为、控制Word环境;Document对象是Word编程中枢,用户可以使用Document 对象或Documents集合属性或方法来打开、创建、保存、启动或关闭文档;Range对象表示文档中的一块连续的区域,由一个起始字符位置和一个结束字符位置定义。在确定Range对象后,即可应用该对象的方法和属性修改区域内容或格式;Selection对象表示当前选择区域,Selection对象只存在一个。当用户想要自己的代码对选定内容做出改变,就可以通过Selection对象来完成任务。 Selection对象可以是一个插入点,也可以是几个字符,或文档的部分内容。用户可以用其方法、属性来移动或扩展选定内容,本文选用GoTo方法来移动光标;Bookmark对象表示文档中的连续区域,既有起始位置,也有结束位置。书签用于在文档中标记一个位置,或者用做文档中的文本容器。用户可以在文档中定义多个书签,把 Bookmark看作是保存在文档中的一个指定位置。

图2 Word对象模型Fig.2 Word object model

Excel对象模型亦是一个等级结构,见图3。一个Excel应用程序就是一个Application,全局对象如菜单,工具条均属 于 Application对 象。Application对 象可以包含很多个Workbook(Workbooks)。具体就是,可以同时打开很多个工作簿(Workbooks),但某一时候只有一个工作簿(Workbook)处于编辑状态,叫做活动工作 簿 (ActiveWorkbook);Workbook对 象 可以包含很多个Worksheet(Worksheets)。具体就是,一个工作簿可以包含很多工作表(Worksheets),某一时刻只有一个工作表(Worksheet)处于编辑状态,称之为活动工作表(ActiveWorksheet)。Workbook独享可以包含很多Shapes对象。工作表中还可以包含一些图表、标记、注释、控件等,浮在Sheet页上,统称Shapes,其中我们接触的最多的是图表(Charts)。WorkSheet对象可以包含很多个Range对象。具体而言,一个工作表里面有很多个单元格,单元格范围用Range表示,Range可以是一个单元格,也可以是多个单元格,单元格均嵌入Sheet页。

图3 Excel对象模型Fig.3 Excel object model

由于Word和Excel类型库好多类命名相同,同时导入若不加处理,编译时会提示重定义错误。解决办法为,使用VC++名字空间。在导入类型库后生成的excel.h头文件中,将整个文件内容包含在namespace mexcel{ }的花括号中,在excel.cpp文件中其他引用的最后加上using namespace mexcel,并在EEWDocOutputDlg.cpp文件开始加上using namespace mexcel;,使用时就不会发生错误。需要注意的是,在需要使用Excel类库所包含对象时,前面必须加上mexcel::。

2.2 创建Excel和Word服务及连接

VC++调用文档生成需要的对象,首先要创建Excel及Word服务。主要代码如下

其次,分别将Workbooks和Documents类对象m_ExcelWorkBooks和m_WordDocs与Idispatch接口关联起来。IDispatch是调度接口,是支持自动化的COM组件必须实现的接口之一。主要代码如下

2.3 读取Excel文件内容,向Word模板写入信息

本程序主要利用Selection对象的Goto方法和Word模板中已插入书签来定位光标,实现文字、图片、表格等的精确插入。通过书签变量的设置,在Word模版中能够准确地将内容插入指定位置(金良锋等,2007)。而一部分内容填写完毕后,光标停留在最后操作处,转到其他位置则采用Goto方法将光标移动到另一书签处,实现图表等信息插入。

2.3.1 读取Excel文件相关内容,因为烈度速报信息以Excel文件形式产出。

2.3.2 插入文字。方法:获得打开模板的书签集,将书签与程序界面上的编辑框变量对应,将编辑框中的文字写入Word模板中的书签变量相应位置。

(1)获得Word模板中的书签集,主要代码为

(2)将Word模板中的书签变量与对话框界面上的编辑框变量对应起来。主要代码为

2.3.3 插入图片。方法:采用Goto方法将光标转到需要插入图片的书签变量处,然后利用InlineShapes集合的AddPicture方法插入图片。

(1)采用Goto方法,将光标转到Word模板中的图片书签变量“Intensity_jpg”处,代码如下

(2)采用InlineShapes集合中AddPicture方法插入图片,代码如下

2.3.4 插入表格。地震预警和烈度速报信息报告里的表格为规则表格,只是表格的行数会随着预警报数变化而有所变化,可采用书签定位后逐格光标移动方法填写表格内容。范例代码如下

3 实际运行

按照上述算法,软件自动生成报告,界面见图4。以某次报告生成为例,操作过程如下。将地震信息,包括时间地点震级按照要求格式输入Earthquake Information栏,根据预警软件和烈度速报软件的生成结果选择相应的选项,点击“Produce”按钮就可直接生成报告,无需再进行繁杂的人工查找和计算。若需要保存或者打印报告,直接在生成的Word文档里操作即可。

图4 地震预警和烈度速报信息报告自动生成Fig.4 Information document autogeneration software interface of Earthquake Early Warning and Intensity Rapid Report

4 结束语

地震预警和烈度速报信息报告自动生成软件在一定程度上提高了地震预警和烈度速报信息报告的产出效率和准确性,为震后快速决策节省了时间,意义重大;VC++调用OLE自动化对象,实现自动读取Excel文件并自动生成Word报告文档的技术,可为同类问题提供参考;在程序中同时调用Word和Excel自动化对象,利用命名空间解决重定义冲突,值得参考。本文只提供部分核心代码,如有需要完整代码者请联系作者。

金良锋,周文详.WORD试验报告的自动生成[J].中国测试技术,2007,33(4):112-115.

金艳,王琐琛,等.震情编报自动化软件[J].地震地磁观测与研究,2015,36(4):135-138.

吴杰.Word对象模型在操作题自动评测中的应用[J].现代计算机,2009,4:104-106.

朱敏,沈同圣,王学伟,周晓东.VC++与VBA结合实现复杂报表[J].计算机应用与软件,2005,22(2):42-43.

Automatic generation technology for the information document of earthquake early warning and intensity rapid report

Di Guorong1), Pan Zhangrong1),Zeng Wenhao1),Tian Xiufeng1),Zhang Weidong1),Wang Yan1),Lei Zhengchao2),Zhang Lei2)and Wang Shaopeng2)
1)Earthquake Administration of Gansu Province,Lanzhou730000,China
2)Longnan Center Seismic Station,Gansu Province746000,China

Earthquake early warning system is a new valid method which could relieve seismic hazard.China has developed some software systems on earthquake early warning and intensity rapid report.A system is running in the earthquake early warning demonstration center of Lanzhou.At present, however, autogeneration of the Earthquake Early Warning and Intensity Rapid Report Information document is not unconsummated.In this paper, the plan of the autogeneration software is introduced.Adopting COM technology to transfer OLE automation objects in Word and Excel automatic server, the characters, pictures, tables etc can be inserted into Earthquake Early Warning and Intensity Rapid Report Information document automatically.It is realized that Earthquake Early Warning and Intensity Rapid Report Information document is automatically generated.It could save time for the decision after earthquakes.

earthquake early warning and intensity rapid report,information document autogeneration software,COM technology,OLE automation objects

10.3969/j.issn.1003-3246.2016.06.028

狄国荣(1981—),男,工程师,从事地震预警和烈度速报工作

中国地震局兰州地震研究所地震科技发展基金(项目编号:2015ZB02,2016Q01)

本文收到日期:2016-02-24

猜你喜欢
速报烈度书签
透明书签
高烈度区域深基坑基坑支护设计
十一月书签
文苑·感悟(2019年11期)2019-12-05 02:50:31
十一月书签
文苑(2019年21期)2019-11-04 09:16:40
高烈度地震区非规则多跨长联连续梁抗震分析
贰月书签
文苑·感悟(2019年2期)2019-02-18 02:10:40
每月速报
空中之家(2018年1期)2018-01-31 01:50:30
每月速报
空中之家(2017年11期)2017-11-28 05:27:41
每月速报
空中之家(2016年1期)2016-05-17 04:47:41
318国道沿线芦山地震的震害特征与烈度区划探讨
灾害学(2014年1期)2014-03-01 02:25:58