999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于報表和模板的報告生成方法研究

2021-05-29 15:33:00毛燠鋒潘玉春朱玉付
軟件工程 2021年5期
關鍵詞:數據挖掘

毛燠鋒 潘玉春 朱玉付

摘? 要:隨著電力報表在輸變電運維中的普及以及數據分析報告生成的迫切需求,急需一種將報表數據轉換成可用的分析報告的方法。本文針對上述需求,提出了一套完整的基于電力報表和Apache POI技術的分析報告生成流程,實現了將歷史數據以圖表的形式嵌入預設模板中,并最終形成格式統一的分析報告,有效地提高了數據分析人員的效率。

關鍵詞:數據挖掘;電力報表;分析報告;Apache POI;模板

中圖分類號:TP391? ? ?文獻標識碼:A

A Report Generation Method based on Report Form and Template

MAO Yufeng, PAN Yuchun, ZHU Yufu

(NR Electric CO., LTD., Nanjing 211102, China)

maoyf@nrec.com; panyc@nrec.com; zhuyufu@nrec.com

Abstract: With the popularity of power reports in operation and maintenance of power transmission and transformation, and the urgent need for data analysis reports, a method of converting report data into usable analysis reports is urgently needed. To meet the above needs, this paper proposes a complete analysis report generation process based on power reports and Apache POI technology. The proposed method makes historical data embedded into the preset template in the form of charts, and finally forms a unified analysis report. It effectively improves the efficiency of data analysts.

Keywords: data mining; power report; analysis report; Apache POI; template

1? ?引言(Introduction)

雖然電力行業目前有很多成熟的B/S或者C/S數據展示系統,但通常是作為展示工具的,即使有下載功能也僅僅是將查詢到的數據以各種圖表的形式展示出來,無法直接生成分析報告的形式。對于需要分析報告用于匯報或者歸檔的用戶來說,實現分析文檔的自動生成工作必要而且急切。本文介紹了一種方便快捷的分析文檔生成方式,即先按照用戶的需求使用報表工具將電力實時庫中的數據以圖表的形式導出到Excel中,然后使用POI類庫取出相應的數據并插入預設模板中生成符合用戶需求的分析報告。針對生成的報告在不同的Office工具中格式不一致問題,使用OpenOffice[1]軟件實現版本轉換,并最終生成樣式固定的可直接使用的數據分析報告。

2? ?相關技術(Related technologies)

電力數據通常保存在實時數據庫中,要利用相關數據生成文檔需要將數據庫中的數據提取出來并以圖表的形式進行表示,鑒于電力報表的高實用性與可擴展性,可用于實現該功能。在將需要的數據導出成圖表等格式后,需要將其插入預設文檔中。POI類庫是Java中操作文檔的通用性工具類,在其基礎上擴展可形成用于文檔內容插入的基礎類,使用該類可實現圖表數據到模板數據的轉化。在得到分析文檔后由于使用了合并表格單元格操作,導致在不同的文檔工具中表格的預覽效果出現差異,可以使用開源的OpenOffice進行轉化從而實現格式一致,在用戶檢查無誤后該分析文檔可作為最終的分析報告進行發布。

2.1? ?電力報表

報表是以表格、圖表的形式來動態展示數據的可視化工具[2],使用報表工具可以對數據庫中的各類數據進行實時分析,進而用于輔助管理決策。報表工具具有專業、簡捷、靈活的特點,在部署設置完成后可以直接使用,形成基于特定領域的數據分析展示系統。使用純Java開發的報表工具結合具體的電力行業業務需求,便形成了電力報表工具,在電力報表的基礎上結合具體的數據和流程便形成了電力數據分析子系統。由于使用的報表工具是純Java開發,對于不滿足需求的功能或者新增功能可以進行二次開發,在此基礎上形成滿足實際需求的電力報表工具。

本文在電力報表的基礎上將需求的數據導出到分類Excel中,包括告警、支流、環流、運行單位等統計信息。導出格式按統計信息的類型分布在不同的Excel中,對于相同類型但層次不同的數據可以分布在不同的sheet中,Excel中格式需要保持穩定,方便后續程序進行遍歷讀取處理。

2.2? ?POI類庫

Apache POI是Apache軟件基金會開發的標準類庫[3],具有使用方便、集成度高、可擴展性強等特點。在Java程序中使用POI類庫可實現對Microsoft Office進行各種基本操作,包括生成文檔文件、提取文檔信息和修改樣式等。本文中主要使用POI技術實現從Excel中讀取圖表數據并按照規范名稱存放,后續再將其插入分析模板中并最終形成分析文檔。具體操作流程圖如圖1所示。

2.2.1? ?圖表提取

Apache POI類庫是將Excel中各個元素(包括Workbook、sheet、row、cell等)的操作方法封裝成函數的形式[4],開發者在POI類庫的基礎上使用自定義函數將Excel各個元素中包含的信息提取出來。

在使用報表工具將需要的圖表導出到Excel后,可以使用POI類庫將其提取出來并分類保存,對于圖片格式數據按規范名稱保存在文件夾下,對于表格以對象的形式保存在內存中,方便后續使用。

算法1 使用POI提取圖表信息

輸入:表格的工作簿(HSSFWorkbook)workbook,outImgPath圖片保存的位置

1: function getSheetPictrues(workbook)

2: SSFPictureData > pictures = workbook.getAllPictures();//獲取所有圖片信息

3: for HSSFShape shape : sheet.getDrawingPatriarch().getChildren() do

4:? ? ?HSSFPicture pic = (HSSFPicture) shape;

5:? ? ?int pictureIndex = pic.getPictureIndex() - 1;

6:? ?HSSFPictureData picData = pictures.get(pictureIndex);

7:? ? String picIndex = fileNameNoExt+(sheetNum +1)+(pictureIndex+1);//設置圖片名稱

8:? ? sheetIndexPicMap.put(picIndex, picData); //將名稱和信息以鍵子對的形式存儲在map中

9:? ?end for

10: end function

11:

12: function getSheetTable(sheet)? //獲取表格信息

13: for j = sheet.getFirstRowNum()—>sheet.getPhysicalNumberOfRows()+ sheet.getFirstRowNum() do

14:? Row row = sheet.getRow(j);//定位到sheet中的一行

15:? ? Cell cell = row.getCell(k);//定位于單元格

16:? ? obj = cell.getNumericCellValue();//獲取單元格值

17:? ? rowValue.put(k, obj);//將值保存到內存中

18:? end for

19: end function

上述操作可以將報表保存到Excel中的數據提取出來,對于圖片信息按照自定義的名稱保存在本地,對于表格信息以map鍵子對的形式提取到內存中。在對圖片和表格提取完成后,準備工作已經就緒。

2.2.2? ?圖表渲染

poi-tl是在Apache POI的基礎上純Java開發的自定義Word模板引擎,具有跨平臺、易移植、集成度高等特點。使用poi-tl技術可以實現在預設模板的基礎上插入信息,并保持格式一致性,即將模板中的{{info}}等信息替換成需要的信息,其中{{}}為通配符,info可為具體信息,也可為模塊信息(表格、圖片等),根據用戶的實際需求設置即可。

插入表格的代碼流程如下:

算法2 使用poi-tl實現圖表渲染

輸入:tableList表格數據對象

1: function renderTable(tableList)

2:? for int i:tabIndex.size() do? // tabIndex.size()為表格寬度

3:? textRender.add(new TextRenderData(color,

String.valueOf(tableList1.get(1).get(i))));//設置表頭

4:? ?end for

5:? header = new RowRenderData(textRender, BackgroundColor);//渲染表頭

6:? ?rows = RowRenderData.build(row);//row為行數據

7:? ?tableDatas.add(rows);//加入數組中

8:? ?test=new MiniTableRenderData(header, tableDatas, MiniTableRenderData.WIDTH_A4_FULL);//表格數據渲染

9:? ?data1.put(tab, test);//生成表格

10:? data1.put(picName,new PictureRenderData(550,350,pictures[i].getName())); //生成圖片

11:? Configure config=Configure.newBuilder().customPolicy("hl0",new DetailTablePolicy()).build();

12:? XWPFTemplate template = XWPFTemplate.compile(moban, config);//將規則應用到模板中

13:? template.render(data1);//將data1數據整個插入文檔中

14: FileOutputStream out = new FileOutputStream(outDoc);//輸出生成的報告

15: end function

預設模板是將用戶需要的文檔中的具體內容替換成通配符,完成預設模板的設置后可直接運行程序提取信息并插入模板。針對生成文檔中需要調整的地方,可以將需求提供給開發人員進行相應的程序調整,對于無法調整的則需要用戶進行手動調整并最終形成用戶需要的報告形式。對于需要合并單元格的不規則表格,可以使用key值匹配自定義規則DetailTablePolicy進行操作,最終得到樣式豐富的表格樣式。針對表格數據的陳述性描述,則可以在程序中進行組織并插入通配符中,圖片數據在設置大小后也會匹配到相應的位置。經過上述步驟可以實現將報表中導出的數據完美適配到模板文檔中,并經過調整獲取最終用戶需要的報告的形式。

2.3? ?OpenOffice轉換

實驗的過程中會遇到生成的Word分析文檔中的表格在不同的工具(Microsoft Office和WPS等)下展示的格式會發生偏差,這是由于不同的Office中定義的樣式不一致導致的。為了保持格式一致,必須將樣式統一,在實驗的過程中發現使用Microsoft Office的版本轉換工具可以使樣式保持統一,由于版權問題最終選擇使用OpenOffice來實現相應的功能。OpenOffice是一款優秀而且免費的跨平臺辦公軟件,具有安裝方便、功能強大等特點[5],與目前主流的辦公軟件也兼容。使用OpenOffice可以實現Office的在線編輯和格式轉換等工作,該軟件提供統一的對外接口,開發者可以根據實際需求使用命令調用相應的功能,但相對的異常處理過程比較煩瑣。為了簡化操作,在OpenOffice上引入jodconverter架包用于管理OpenOffice。jodconverter是一個文檔轉換器工具包,在OpenOffice、PageOffice等開源Office工具的基礎上實現文檔的轉換工作,具有集成度高、可操作性強的特點。

Jodconverter是一款純Java編寫的Office文件轉換器,實現了對Office工具相關功能的使用和控制[6],其使用相關的方法實現相應的程序接口調用,用戶只需要關注需要實現的功能而不用關注具體的實現和處理過程,具體實現如圖2所示。

3? ?實驗效果(Experimental effect)

本章在上述技術的基礎上使用模板文檔生成目標需要的分析文檔,在用戶檢查無誤的情況下可直接作為最終可發布的報告。其中模板文檔將動態變化的部分用通配符代替,存放在程序部署的服務器中,由于報表導出數據耗時較多,報表的生成使用crontab[7]執行生成腳本作為定時任務,而圖表的提取以及模板的插入耗時較少,在用戶點擊下載文檔按鈕時執行。在做好上述準備后,即可運行程序生成最終的文檔,實驗效果如圖3和圖4所示。

從上圖可以發現,原始模板中可設置的內容使用通配符進行替換[8],對于表格信息需要先插入單個單元格并定義好格式,不規則表格的渲染在程序后端定義規則后根據info值進行引入。由于表格信息存放在內存中,對于需要文字渲染的

部分遍歷對比輸出即可。使用該方法得到的報告具有結構完整、集成度高、內容豐富等特點,因此該方法適用于格式固定、內容豐富的報告的自動生成工作。用戶在提供原始模板后需要的操作僅僅是對生成的報告進行核實,該方法有效地提高了工作效率。

4? ?結論(Conclusion)

隨著計算機技術的發展及其在電力行業的普及,使用計算機技術解決電力行業中遇到的實際問題愈發普遍。本文在滿足用戶需求的基礎上克服了開發過程中遇到的困難,形成了一整套完整的從數據庫中的實時數據到分析文檔的生成流程,并基于該流程開發相應的工具實現了分析文檔的自動生成。在具體實現過程中使用電力報表以圖表的形式獲取用戶需要的數據,然后使用POI技術在預設的文檔基礎上將其生成用戶需要的分析文檔,最后為了保持格式的一致使用OpenOffice將其格式進行轉換,在完成上述流程后即可獲得最終的分析文檔供用戶使用。在實際的應用中,如果需要按照一定的模板定期生成發布文檔可參考上述流程,結合實際的需求進行差異化開發,從而簡化人工的操作,提高工作效率。

雖然該方法中使用了報表工具和POI技術,但是報表是使用腳本執行的,而使用POI技術的相關導入導出則使用的是Java程序來開發,兩者之間存在異步操作,這也導致了可能存在數據不一致的問題,后續開發中可以在Java程序中直接調用報表的功能,并將相應的數據存放在內存中然后導出到模板中。

參考文獻(References)

[1] 周洪林,何興無.基于Linux的OpenOffice.org應用[J].信息技術,2012,36(07):144-146.

[2] 唐遠濤.基于Web報表開發的研究與應用[D].成都:成都理工大學,2006.

[3] Bawankule K L, Raut N B. Design and implementation of massive MYSQL data intelligent export system to excel by using Apache–POI libraries[J]. IOSR Journal of Computer Engineering, 2014, 16(5): 58-65.

[4] 吉豪杰,宋欣潮.POI用戶模型的重構與優化[J].軟件,

2019(5):193-199.

[5] Comeau T, Garrett B, Richon J, et al. Using OpenOffice as a portable interface to JAVA-based applications[J]. Astronomical Data Analysis Software & Systems XIII, 2004, 314:701-703.

[6] 楊權.基于OpenOffice服務對新聞編輯方式的改進[J].現代計算機,2017(24):83-86.

[7] 郭迪,趙政文,王璽.基于cron的計劃任務時間管理的設計與實現[J].現代電子技術,2011,34(14):62-64.

[8] 邵欣欣,張明會,高梓峻.文檔生成技術研究與應用[J].軟件工程,2018,21(01):15-17.

作者簡介:

毛燠鋒(1992-),男,碩士,工程師.研究領域:數據挖掘,軟件開發.

潘玉春(1981-),男,碩士,工程師.研究領域:電力系統WEB可視化.

朱玉付(1989-),男,本科,工程師.研究領域:軟件開發.

猜你喜歡
數據挖掘
基于數據挖掘的船舶通信網絡流量異常識別方法
探討人工智能與數據挖掘發展趨勢
數據挖掘技術在打擊倒賣OBU逃費中的應用淺析
基于并行計算的大數據挖掘在電網中的應用
電力與能源(2017年6期)2017-05-14 06:19:37
數據挖掘技術在中醫診療數據分析中的應用
一種基于Hadoop的大數據挖掘云服務及應用
數據挖掘在高校圖書館中的應用
數據挖掘的分析與探索
河南科技(2014年23期)2014-02-27 14:18:43
基于GPGPU的離散數據挖掘研究
利用數據挖掘技術實現LIS數據共享的開發實踐
主站蜘蛛池模板: 欧美日本在线播放| 2021亚洲精品不卡a| 久久亚洲美女精品国产精品| 巨熟乳波霸若妻中文观看免费| 亚洲精品视频免费| 欧美性猛交xxxx乱大交极品| 久久这里只有精品66| 91精品国产91欠久久久久| 国产自在自线午夜精品视频| 欧美综合区自拍亚洲综合天堂| 国产乱子伦精品视频| 国产精品一区二区不卡的视频| 高清乱码精品福利在线视频| 四虎成人免费毛片| 久久五月天国产自| 高清不卡毛片| 国产办公室秘书无码精品| 国产欧美在线观看精品一区污| 亚洲综合精品香蕉久久网| 美女黄网十八禁免费看| 在线亚洲小视频| www.国产福利| 国产a v无码专区亚洲av| 成人一级黄色毛片| 国产精品99一区不卡| 亚洲成年网站在线观看| 国产精品99久久久久久董美香| 免费人成又黄又爽的视频网站| 99草精品视频| 午夜小视频在线| 成人在线视频一区| 大香伊人久久| 国产一级妓女av网站| 久久婷婷色综合老司机| 国产成人精品男人的天堂下载| 国产乱子伦无码精品小说| 无码高潮喷水在线观看| 理论片一区| 国模视频一区二区| 99re这里只有国产中文精品国产精品| 亚洲无码免费黄色网址| 毛片免费视频| 欧美成一级| 国产精品一区二区不卡的视频| aa级毛片毛片免费观看久| 91青青草视频在线观看的| 国产一级二级在线观看| 成人综合网址| 全部毛片免费看| 国产精品3p视频| 久久精品国产国语对白| 中文字幕欧美成人免费| 午夜精品一区二区蜜桃| 四虎成人精品在永久免费| 精品无码人妻一区二区| 日韩欧美国产成人| 亚洲精品爱草草视频在线| 亚洲中文字幕久久精品无码一区| 国产精品高清国产三级囯产AV | 日韩无码真实干出血视频| 狠狠色综合网| 久久视精品| 成人中文在线| 91成人免费观看在线观看| AV色爱天堂网| 国产乱视频网站| 2020亚洲精品无码| 欧美日韩精品在线播放| 国产凹凸视频在线观看| 真人免费一级毛片一区二区| 99视频有精品视频免费观看| 九九精品在线观看| 久久这里只有精品国产99| 久久青草热| 少妇极品熟妇人妻专区视频| 久久久国产精品免费视频| 99一级毛片| 国产亚洲成AⅤ人片在线观看| 久久精品人人做人人综合试看| 国产精品一区二区国产主播| 日韩免费中文字幕| 51国产偷自视频区视频手机观看|