公共气象服务文档自动化研究与应用

2018-07-16 11:50王锡良
中低纬山地气象 2018年3期
关键词:阿坝州书签文档

王锡良

(四川省阿坝州气象局,四川 马尔康 624000)

1 引言

气象服务,是指气象部门基于大气科学的理论与技术,根据社会、经济、军事、生态、防灾减灾等的需要,向社会提供的各类工作[1]。是我国气象事业的立业之本[2-5]。目前,我国的气象服务体系由决策气象服务、公众气象服务、专业专项气象服务和气象科技服务构成[6-7]。公共气象服务是气象业务产品向社会提供服务的出口,是气象工作的出发点和归宿[8-9]。气象部门通过电视、广播、传真、手机短信、手机APP、电子邮件、微信、微博等各种方式[10-13],向社会公众发布气象信息。可见,公共气象服务工作需要根据不同用户的各种需求,有针对性地提供各种气象服务产品。为用户提供Word、Excel等Microsoft Office软件格式的文档,则是最为常用的服务产品提供方式。为了提高工作效率,减轻工作人员的劳动强度,利用软件开发技术和Office软件相结合,实现气象服务文档的自动化生成,是公共气象服务工作中的迫切需求。

2 文档自动化技术

2.1 常用的Microsoft Office文档自动化技术

实现Microsoft Office文档自动化的技术通常有两种,一是利用VBA(Visual Basic for Application)[14-15]来实现。VBA是微软公司开发的能执行自动化任务的编程语言,主要用于扩展Windows应用程序的功能,特别是对于Microsoft Office软件,VBA提供了访问Office文档的接口,包含了大量针对该类文档的对象和函数。使用VBA编程可以对文档中各对象的属性进行操作,以实现Office文档操作的自动化。二是通过COM(Component Object Model,组件对象模型)[16-20]技术以接口调用的方式操控Office组件来生成文档。COM是Microsoft公司提出的在软件之间通信的一种组件技术,其目的是为了提高软件的可复用度,解决不同程序之间的通信和互操作性问题。Microsoft Office对COM技术有着很好的支持,其本身就是COM服务器,通过它的自动化服务器功能,可以在不同的应用程序间共享数据,进行数据的导入导出。这两种技术的优点如下:都是Microsoft公司的技术,能和Microsoft Office软件紧密结合,实现文档的自动化。缺点是:它们都离不开Microsoft Office环境,在工作的机器上必须安装Microsoft Office软件才能运行。针对某个特定版本的Office软件开发的应用程序,在其它版本的Office环境中运行,还可能出现错误而无法运行的情况。

2.2 Aspose.Words for .NET和Aspose.Cells for .NET

Aspose.Words for .NET和Aspose.Cells for .NET是功能强大的类库。Aspose.Words支持DOC、OpenDocument、OOXML、HTML、RTF、PDF等格式,通过它可以直接在应用程序中执行各种文档处理任务。Aspose.Cells是电子表格组件,支持对Excel格式的文档应用复杂的计算公式,导入和导出文本、表格、图像等数据。而完成这些功能都无需使用Microsoft Word、Excel 和Microsoft Office Automation。采用.NET编程语言和Aspose.Words for .NET、Aspose.Cells for .NET类库相结合,即使在没有安装Microsoft Office软件的环境中,也能生成Word和Excel文档,并能进行修改、转换和打印等操作,也无需考虑Office软件的版本问题,可灵活实现常用办公文档的自动化。

3 Aspose.Words for .NET和Aspose.Cells for .NET在公共气象服务文档自动化中的应用

Word和Excel格式的文档是日常工作中使用最为普遍的两种Office办公软件文档。在公共气象服务工作中,服务产品通常以这两种格式的文档提供给服务对象。一种典型应用是,把动态的数据自动写入Word模板中的特定位置,以生成服务产品的Word文档;另外一种是,从Excel文档中自动提取出需要的数据,然后写入Word模板中,来生成Word文档。以下,通过使用C#语言,结合Aspose.Words for .NET、Aspose.Cells for .NET来实现这两种应用。

3.1 基于Word模板生成word文档

以Word格式提供的公共气象服务文档,通常都具有一定的格式。不同时间发布的的文档,只是某些数据不同而已。比如,日期、气温、降水量、天气现象等。而这些数据在文档中的位置不会变化。事先制作好具有固定格式的Word文档,在文档中需要插入数据的地方预留特定的“标识”,然后通过C#控制Aspose.Words for .NET在“标识”处写入需要的数据,即能快速生成服务文档。在“标识”处写入数据有两种方式,一种是文本替换的方式,即用需要的数据替换掉文档中原来位置的文本;另外一种是书签引用替换的方式,在需要插入数据的地方插入书签引用,在程序运行时,用数据替换掉对应的书签即可。这里用第二种方式来说明。

以生成提供给阿坝州电力公司的“阿坝州各县(市)48 h预报”服务文档为例。先建立Word文档,在文档中输入文字、建立表格,并设置好格式。在需要插入数据的地方,插入相应的书签引用。如图1所示。

图1 Word模板文档Fig.1 Word template document

建立一个工程项目,在工程中添加对Aspose.Words.dll文件的引用,并在代码中引入命名空间:

using Aspose.Words;

在准备好需要写入文档的数据以后,通过程序控制Aspose.Words写入模板中的相应的位置处。主要代码如下:

string strDocPath = System.AppDomain.CurrentDomain.BaseDirectory + @" template电力公司48小时预报.docx";

Aspose.Words.Document doc = new Aspose.Words.Document(strDocPath);//载入Word模板

Aspose.Words.Bookmark bookmark = doc.Range.Bookmarks["datetime_header"];

if (bookmark != null)

{

bookmark.Text = strDatetime_header;//给当前书签的文本赋值

}

……(此处略去其它功能相似代码)

string strDocOutFile =System.AppDomain.CurrentDomain.BaseDirectory + @" outFile电力公司48小时预报_" + strYMD + ".docx";//输出的word文件

doc.Save(strDocOutFile);//保存文档

生成的文档如图2所示。

图2 基于模板生成的Word文档Fig.2 Word document based on template generation

3.2 Excel文档和Word文档之间的数据交互

在日常工作中,有些保存在Excel中的数据经过处理后,需要写入Word文档,然后提供给客户。如果数据较多,通过手工的方式来处理,将是非常大的工作量。通过Aspose.Words for .NET和Aspose.Cells for .NET相配合,从Excel文档中提取需要的数据,然后写入Word模板中的相应位置,生成Word服务文档,将变得非常快捷。

以生成阿坝州岷江流域和大渡河流域雨情报告为例。阿坝州气象局在全州范围内建设了300多个自动气象站,这些自动气象站在某一时段内的降水量数据是以Excel文档提供的。如图3所示。

图3 自动气象站降水数据Fig.3 Automatic weather station precipitation data

首先,新建Word模板,方法同上。然后,新建一项目工程,在工程中添加对Aspose.Cells.dll、Aspose.Words.dll文件的引用,在C#代码中引入命名空间:

using Aspose.Words;

using Aspose.Cells;

通过Aspose.Cells for .NET从Excel文件中获取数据,然后写入Word模板生成服务文档的关键代码如下:

//创建一个工作簿Workbook对象和工作表Worksheet对象

Workbook wkBook = new Workbook(rainFile, txtLoadOpt);

Worksheet wkSheet = null;

wkBook.FileFormat = FileFormatType.Xlsx;

wkSheet = wkBook.Worksheets[0];

Cells cells = wkSheet.Cells;//获取sheet0的所有单元格

for (int i = 0; i < cells.MaxDataRow + 1; i++)

{

strCurStation = cells[i, intColumn_station].StringValue.Trim();//站点名

strCurRain = cells[i, intColumn_rain].StringValue.Trim());//站点对应的降水量

if (strCurStation.Equals("映秀镇七一中学"))

{

bookmark = doc.Range.Bookmarks["映秀镇"];

//给Word模板中当前书签的文本赋值

SetBookmarkValue(bookmark, strCurRain );

}

……(此处略去其它功能相似代码)

}

//释放对象

wkSheet = null;

wkBook = null;

生成的Word文档如图4所示。

图4 基于模板和Excel文档生成的Word文档Fig.4 Word document generated based on templates and Excel document

4 结语

在日常工作中,Word和Excel格式的文档应用非常普遍。通过.NET编程语言和Aspose.Words for .NET、Aspose.Cells for .NET相配合,能非常快捷地解决实际应用。其最大的灵活性在于,在工作环境中不依赖于Microsoft Office软件,就能生成Word和Excel文档。Aspose.Words for .NET还能实现对PDF、OpenDocument、HTML等格式的支持和转换;Aspose.Cells for .NET支持所有Excel格式类型的操作,能将Excel的数据保存为各种格式、实现数据报表等。根据公共气象服务工作中的业务需求,把这些功能灵活地应用到文档自动化技术中,将极大地提高工作效率。

猜你喜欢
阿坝州书签文档
阿坝州动物防疫工作措施
浅谈Matlab与Word文档的应用接口
透明书签
有人一声不吭向你扔了个文档
阿坝州:根治欠薪行动全力实现“两清零”目标
阿坝州黄河第一湾格萨尔岭国所在地探微
十一月书签
十一月书签
贰月书签
Word文档 高效分合有高招