国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

公共氣象服務(wù)文檔自動化研究與應(yīng)用

2018-07-16 11:50王錫良
中低緯山地氣象 2018年3期
關(guān)鍵詞:阿壩州書簽文檔

王錫良

(四川省阿壩州氣象局,四川 馬爾康 624000)

1 引言

氣象服務(wù),是指氣象部門基于大氣科學(xué)的理論與技術(shù),根據(jù)社會、經(jīng)濟、軍事、生態(tài)、防災(zāi)減災(zāi)等的需要,向社會提供的各類工作[1]。是我國氣象事業(yè)的立業(yè)之本[2-5]。目前,我國的氣象服務(wù)體系由決策氣象服務(wù)、公眾氣象服務(wù)、專業(yè)專項氣象服務(wù)和氣象科技服務(wù)構(gòu)成[6-7]。公共氣象服務(wù)是氣象業(yè)務(wù)產(chǎn)品向社會提供服務(wù)的出口,是氣象工作的出發(fā)點和歸宿[8-9]。氣象部門通過電視、廣播、傳真、手機短信、手機APP、電子郵件、微信、微博等各種方式[10-13],向社會公眾發(fā)布?xì)庀笮畔ⅰ?梢?,公共氣象服?wù)工作需要根據(jù)不同用戶的各種需求,有針對性地提供各種氣象服務(wù)產(chǎn)品。為用戶提供Word、Excel等Microsoft Office軟件格式的文檔,則是最為常用的服務(wù)產(chǎn)品提供方式。為了提高工作效率,減輕工作人員的勞動強度,利用軟件開發(fā)技術(shù)和Office軟件相結(jié)合,實現(xiàn)氣象服務(wù)文檔的自動化生成,是公共氣象服務(wù)工作中的迫切需求。

2 文檔自動化技術(shù)

2.1 常用的Microsoft Office文檔自動化技術(shù)

實現(xiàn)Microsoft Office文檔自動化的技術(shù)通常有兩種,一是利用VBA(Visual Basic for Application)[14-15]來實現(xiàn)。VBA是微軟公司開發(fā)的能執(zhí)行自動化任務(wù)的編程語言,主要用于擴展Windows應(yīng)用程序的功能,特別是對于Microsoft Office軟件,VBA提供了訪問Office文檔的接口,包含了大量針對該類文檔的對象和函數(shù)。使用VBA編程可以對文檔中各對象的屬性進行操作,以實現(xiàn)Office文檔操作的自動化。二是通過COM(Component Object Model,組件對象模型)[16-20]技術(shù)以接口調(diào)用的方式操控Office組件來生成文檔。COM是Microsoft公司提出的在軟件之間通信的一種組件技術(shù),其目的是為了提高軟件的可復(fù)用度,解決不同程序之間的通信和互操作性問題。Microsoft Office對COM技術(shù)有著很好的支持,其本身就是COM服務(wù)器,通過它的自動化服務(wù)器功能,可以在不同的應(yīng)用程序間共享數(shù)據(jù),進行數(shù)據(jù)的導(dǎo)入導(dǎo)出。這兩種技術(shù)的優(yōu)點如下:都是Microsoft公司的技術(shù),能和Microsoft Office軟件緊密結(jié)合,實現(xiàn)文檔的自動化。缺點是:它們都離不開Microsoft Office環(huán)境,在工作的機器上必須安裝Microsoft Office軟件才能運行。針對某個特定版本的Office軟件開發(fā)的應(yīng)用程序,在其它版本的Office環(huán)境中運行,還可能出現(xiàn)錯誤而無法運行的情況。

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等格式,通過它可以直接在應(yīng)用程序中執(zhí)行各種文檔處理任務(wù)。Aspose.Cells是電子表格組件,支持對Excel格式的文檔應(yīng)用復(fù)雜的計算公式,導(dǎo)入和導(dǎo)出文本、表格、圖像等數(shù)據(jù)。而完成這些功能都無需使用Microsoft Word、Excel 和Microsoft Office Automation。采用.NET編程語言和Aspose.Words for .NET、Aspose.Cells for .NET類庫相結(jié)合,即使在沒有安裝Microsoft Office軟件的環(huán)境中,也能生成Word和Excel文檔,并能進行修改、轉(zhuǎn)換和打印等操作,也無需考慮Office軟件的版本問題,可靈活實現(xiàn)常用辦公文檔的自動化。

3 Aspose.Words for .NET和Aspose.Cells for .NET在公共氣象服務(wù)文檔自動化中的應(yīng)用

Word和Excel格式的文檔是日常工作中使用最為普遍的兩種Office辦公軟件文檔。在公共氣象服務(wù)工作中,服務(wù)產(chǎn)品通常以這兩種格式的文檔提供給服務(wù)對象。一種典型應(yīng)用是,把動態(tài)的數(shù)據(jù)自動寫入Word模板中的特定位置,以生成服務(wù)產(chǎn)品的Word文檔;另外一種是,從Excel文檔中自動提取出需要的數(shù)據(jù),然后寫入Word模板中,來生成Word文檔。以下,通過使用C#語言,結(jié)合Aspose.Words for .NET、Aspose.Cells for .NET來實現(xiàn)這兩種應(yīng)用。

3.1 基于Word模板生成word文檔

以Word格式提供的公共氣象服務(wù)文檔,通常都具有一定的格式。不同時間發(fā)布的的文檔,只是某些數(shù)據(jù)不同而已。比如,日期、氣溫、降水量、天氣現(xiàn)象等。而這些數(shù)據(jù)在文檔中的位置不會變化。事先制作好具有固定格式的Word文檔,在文檔中需要插入數(shù)據(jù)的地方預(yù)留特定的“標(biāo)識”,然后通過C#控制Aspose.Words for .NET在“標(biāo)識”處寫入需要的數(shù)據(jù),即能快速生成服務(wù)文檔。在“標(biāo)識”處寫入數(shù)據(jù)有兩種方式,一種是文本替換的方式,即用需要的數(shù)據(jù)替換掉文檔中原來位置的文本;另外一種是書簽引用替換的方式,在需要插入數(shù)據(jù)的地方插入書簽引用,在程序運行時,用數(shù)據(jù)替換掉對應(yīng)的書簽即可。這里用第二種方式來說明。

以生成提供給阿壩州電力公司的“阿壩州各縣(市)48 h預(yù)報”服務(wù)文檔為例。先建立Word文檔,在文檔中輸入文字、建立表格,并設(shè)置好格式。在需要插入數(shù)據(jù)的地方,插入相應(yīng)的書簽引用。如圖1所示。

圖1 Word模板文檔Fig.1 Word template document

建立一個工程項目,在工程中添加對Aspose.Words.dll文件的引用,并在代碼中引入命名空間:

using Aspose.Words;

在準(zhǔn)備好需要寫入文檔的數(shù)據(jù)以后,通過程序控制Aspose.Words寫入模板中的相應(yīng)的位置處。主要代碼如下:

string strDocPath = System.AppDomain.CurrentDomain.BaseDirectory + @" template電力公司48小時預(yù)報.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;//給當(dāng)前書簽的文本賦值

}

……(此處略去其它功能相似代碼)

string strDocOutFile =System.AppDomain.CurrentDomain.BaseDirectory + @" outFile電力公司48小時預(yù)報_" + strYMD + ".docx";//輸出的word文件

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

生成的文檔如圖2所示。

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

3.2 Excel文檔和Word文檔之間的數(shù)據(jù)交互

在日常工作中,有些保存在Excel中的數(shù)據(jù)經(jīng)過處理后,需要寫入Word文檔,然后提供給客戶。如果數(shù)據(jù)較多,通過手工的方式來處理,將是非常大的工作量。通過Aspose.Words for .NET和Aspose.Cells for .NET相配合,從Excel文檔中提取需要的數(shù)據(jù),然后寫入Word模板中的相應(yīng)位置,生成Word服務(wù)文檔,將變得非??旖?。

以生成阿壩州岷江流域和大渡河流域雨情報告為例。阿壩州氣象局在全州范圍內(nèi)建設(shè)了300多個自動氣象站,這些自動氣象站在某一時段內(nèi)的降水量數(shù)據(jù)是以Excel文檔提供的。如圖3所示。

圖3 自動氣象站降水?dāng)?shù)據(jù)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文件中獲取數(shù)據(jù),然后寫入Word模板生成服務(wù)文檔的關(guān)鍵代碼如下:

//創(chuàng)建一個工作簿W(wǎng)orkbook對象和工作表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());//站點對應(yīng)的降水量

if (strCurStation.Equals("映秀鎮(zhèn)七一中學(xué)"))

{

bookmark = doc.Range.Bookmarks["映秀鎮(zhèn)"];

//給Word模板中當(dāng)前書簽的文本賦值

SetBookmarkValue(bookmark, strCurRain );

}

……(此處略去其它功能相似代碼)

}

//釋放對象

wkSheet = null;

wkBook = null;

生成的Word文檔如圖4所示。

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

4 結(jié)語

在日常工作中,Word和Excel格式的文檔應(yīng)用非常普遍。通過.NET編程語言和Aspose.Words for .NET、Aspose.Cells for .NET相配合,能非常快捷地解決實際應(yīng)用。其最大的靈活性在于,在工作環(huán)境中不依賴于Microsoft Office軟件,就能生成Word和Excel文檔。Aspose.Words for .NET還能實現(xiàn)對PDF、OpenDocument、HTML等格式的支持和轉(zhuǎn)換;Aspose.Cells for .NET支持所有Excel格式類型的操作,能將Excel的數(shù)據(jù)保存為各種格式、實現(xiàn)數(shù)據(jù)報表等。根據(jù)公共氣象服務(wù)工作中的業(yè)務(wù)需求,把這些功能靈活地應(yīng)用到文檔自動化技術(shù)中,將極大地提高工作效率。

猜你喜歡
阿壩州書簽文檔
阿壩州動物防疫工作措施
淺談Matlab與Word文檔的應(yīng)用接口
透明書簽
有人一聲不吭向你扔了個文檔
阿壩州:根治欠薪行動全力實現(xiàn)“兩清零”目標(biāo)
阿壩州黃河第一灣格薩爾嶺國所在地探微
十一月書簽
十一月書簽
貳月書簽
Word文檔 高效分合有高招
铜鼓县| 广元市| 新河县| 伊吾县| 峨眉山市| 晋江市| 延长县| 武宣县| 高阳县| 滁州市| 新泰市| 错那县| 青川县| 洱源县| 措勤县| 宜良县| 玉溪市| 元江| 巴青县| 巴南区| 那坡县| 万载县| 泽州县| 方正县| 谢通门县| 肇庆市| 仙桃市| 周口市| 兴安盟| 碌曲县| 桐乡市| 永登县| 富裕县| 宿松县| 灵川县| 涞水县| 阿巴嘎旗| 桓台县| 老河口市| 和田县| 凤凰县|