CN109815645A - 一种实现后台服务器导出前台界面的方法 - Google Patents

一种实现后台服务器导出前台界面的方法 Download PDF

Info

Publication number
CN109815645A
CN109815645A CN201910072306.0A CN201910072306A CN109815645A CN 109815645 A CN109815645 A CN 109815645A CN 201910072306 A CN201910072306 A CN 201910072306A CN 109815645 A CN109815645 A CN 109815645A
Authority
CN
China
Prior art keywords
export
foreground
excel
interface
component
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201910072306.0A
Other languages
English (en)
Inventor
李玉营
李成恕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Inspur Tianyuan Communication Information System Co Ltd
Original Assignee
Inspur Tianyuan Communication Information System Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Inspur Tianyuan Communication Information System Co Ltd filed Critical Inspur Tianyuan Communication Information System Co Ltd
Priority to CN201910072306.0A priority Critical patent/CN109815645A/zh
Publication of CN109815645A publication Critical patent/CN109815645A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明特别涉及一种实现后台服务器导出前台界面的方法。该实现后台服务器导出前台界面的方法,web服务器安装phantomjs组件,基于后台java服务结合phantomjs组件命令方式进行导出前台界面;所述phantomjs组件采用截屏方式进行导出;其他服务器调用前台界面时,传入页面的portal id后调用服务器的导出接口即可;前台导出portal时,后台提供portal的行列布局信息,导出到excel文件、pdf文件或html文件中即可。该实现后台服务器导出前台界面的方法,不仅能确保导出后与前台界面显示一致,而且导出效率高于java自定义编写导出或其他三方件的导出,导出使用到的软件适用于所有java web服务器提供的外部接口,同时支持发送邮件的html格式,外部系统只需要指定导出哪一种格式即可。

Description

一种实现后台服务器导出前台界面的方法
技术领域
本发明涉及计算机软件技术领域,特别涉及一种实现后台服务器导出前台界面的方法。
背景技术
上世纪90年代开始的Internet的爆炸性发展给个人和整个软件产业都带来了一场巨大的变革。随着互联网络的高速发展,传递信息的速度越来越快,而发布信息的成本却在不断地降低。传统专有软件商在软件发布和维护成本不断降低的同时,仍然试图通过昂贵的许可证方式分发软件。而消费者希望能够快速、廉价甚至自由地获得具有必要功能的、稳定和可用的产品。这样就凸现了一个原先并不明显的矛盾:前互联网时代的版权法规限制着软件和信息产品在网络上的自由传播,称之为“盗版”,普通大众需要一种合法的、成本可接受的方式来获得必要的软件和信息产品。有需求就有市场。起源于80年代的自由软件和开放源码运动在潜行了相当长一段时期之后,从此具有了适合的土壤而蓬勃发展起来。
很多时候,一个软件应用程序需要生成Microsoft Excel文件格式的报告。有时,一个应用程序甚至希望将Excel文件作为输入数据。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。
任何Java程序员愿意将MS Office文件的输出
任何客户都想把前台所见即所得方式进行导出到Ms Office Excel中或者PDF、html格式的文件里面
任何客户都想在定时任务中,可以把表格数据或者可视化图形定时发送到邮箱或sms、mms,以及其他沟通工具。
PhantomJS是一个基于WebKit的服务器端JavaScript API。它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准:DOM处理,CSS选择器,JSON,Canvas,和SVG。PhantomJS可以用于页面自动化,网络监测,网页截屏以及无界面测试等。
Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MSOffice文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。
OpenOffice.org来自上世纪八十年代中期在德国创立的一家软件公司StarDivision,它生产一种叫做StarOffice的办公软件,市场主要集中在欧洲。因为价格低廉、稳定、跨平台、功能充足等优点获得了用户的好评。Sun Microsystems意识到市场上需要这样一种替代专有软件的产品,并且认为公司的愿景与策略和StarOffice的技术背景都与这样的市场需求和趋势相吻合。于是Sun在1999年8月收购了Star Division公司,并于翌年7月资助建立了OpenOffice.org社区。同年10月,公布了StarOffice绝大部分源代码(大约800万行),由此成为世界三大开源社区之一(另外两个是Mozilla和Apache);12月,发布了OpenOffice.org XML文件格式规范。2001年7月,OpenOffice.org开发工具包发布。2002年5月,OpenOffice.org 1.0正式发布。2003年3月,OpenOffice.org 2003首届年会在德国汉堡召开。2003年10月,OpenOffice.org 1.1.0发布。
实际上,OpenOffice.org不只是一个办公软件产品,它也是一个开发平台,开发者可以基于它提供的应用程序接口组建自己的产品,设计并实现完整的解决方案;它也是一个网络社区,世界各地成千上万的用户和软件开发者每天都在这里交流;它还是一种信念:办公软件这种生产力工具已经成为社会信息基础设施的必要组成部分,而OpenOffice.org正是通过开放源码社区来使之为更广泛的人群服务,推动整个社会的信息化水平。
对于后台导出excel、html、pdf、csv等格式的服务接口,往往需要解决下列难题:
1)三方件安装整合解耦问题。
2)整个页面protal导出时,页面元素包含表格时导出全部数据,图形时导出图片。这就带来了整个页面既有表格又有图形的时候,需要对页面布局解析,再一个excel sheet页中按照布局信息一个一个写入表格和图形,这就带来了相当大的复杂性、灵活性。
3)对于前台渲染图形或表格的解耦,提供一种portal id和图表id的入参渲染单个图形或表格能力,提供给phantomjs使用。
4)Phantomjs生成的图片和openoffice生成的pdf和html临时文件增长很快。
基于上述情况,本发明提出了一种实现后台服务器导出前台界面的方法。
发明内容
本发明为了弥补现有技术的缺陷,提供了一种简单高效的实现后台服务器导出前台界面的方法。
本发明是通过如下技术方案实现的:
一种基于内外线资源的审批录入方法,其特征在于:web服务器安装phantomjs组件,基于后台java服务结合phantomjs组件命令方式进行导出前台界面;所述phantomjs组件采用截屏方式进行导出,省去了java或第三方组件自行拼接图形或表格的麻烦;其他服务器调用前台界面时,传入页面的portal id后调用服务器的导出接口即可,省去了其他服务器获取数据、渲染页面的麻烦;前台导出portal时,后台提供portal的行列布局信息,导出到excel文件、pdf文件或html文件中即可。
具体包括以下步骤:
(1)由前台触发导出按钮流程,后台获取页面传递的Portal id,在数据库中获取portal布局信息;
(2)后台获取到布局信息后解析布局,获取布局行、列和组件id信息;
(3)根据获取到的组件id信息解析获取组件的原始数据源,供前台单页面应用使用;
(4)获取前台传递的导出类型,并根据导出类型引流分支操作即可。
所述步骤(1)中,前台触发导出按钮流程后,向后台发出Portal id信息,导出类型信息和时间戳信息。
所述导出类型包括CSV,HTML,Excel和PDF。
当所述导出类型为CSV时,使用java IO流写入CSV文件中,中间使用逗号分隔,一个portal多个组件时,使用字符串以及3个空行进行隔开识别。
当所述导出类型为HTML时,先导出Excel到指定路径中,再使用Openoffice将Excel转换成HTML文件到指定路径中。
当所述导出类型为PDF时,先导出Excel到指定路径中,再使用Openoffice将Excel转换成PDF文件到指定路径中。
当所述导出类型为Excel时,后台解析布局获取的组件为表格或者图形。
当后台解析布局获取的组件为表格数据源时,使用Apache POI将表格写入Excel指定布局中,生成Excel到指定路径中即可。
后台解析布局获取的组件为图形数据源时,使用PhantomJS生成图片,使用ApachePOI把图片写入Excel指定布局中,生成Excel到指定路径中。
本发明的有益效果是:该实现后台服务器导出前台界面的方法,不仅能确保导出后与前台界面显示一致,而且导出效率高于java自定义编写导出或其他三方件的导出,导出使用到的三方软件phantomJS,Apache POI和openOffice适用于所有java web服务器提供的外部接口,同时支持发送邮件的html格式,外部系统只需要指定导出哪一种格式即可。
附图说明
附图1为本发明实现后台服务器导出前台界面的方法示意图。
附图2为本发明PhantomJS具体使用操作示意图。
附图3为本发明Openoffice具体使用操作示意图。
附图4为本发明Apache POI具体使用操作示意图。
具体实施方式
为了使本技术领域的人员更好的理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚,完整的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
该实现后台服务器导出前台界面的方法,web服务器安装phantomjs组件,基于后台java服务结合phantomjs组件命令方式进行导出前台界面;所述phantomjs组件采用截屏方式进行导出,省去了java或第三方组件自行拼接图形或表格的麻烦;其他服务器调用前台界面时(例如task定时任务跑报表,定时发送邮件、发送短信、告警等信息),传入页面的portal id后调用服务器的导出接口即可,省去了其他服务器获取数据、渲染页面的麻烦;前台导出portal时,后台提供portal的行列布局信息,导出到excel文件、pdf文件或html文件中即可。
具体包括以下步骤:
(1)由前台触发导出按钮流程,后台获取页面传递的Portal id,在数据库中获取portal布局信息;
(2)后台获取到布局信息后解析布局,获取布局行、列和组件id信息;
(3)根据获取到的组件id信息解析获取组件的原始数据源,供前台单页面应用使用;
(4)获取前台传递的导出类型,并根据导出类型引流分支操作即可。
所述步骤(1)中,前台触发导出按钮流程后,向后台发出Portal id信息,导出类型信息和时间戳信息。
所述导出类型包括CSV,HTML,Excel和PDF。
当所述导出类型为CSV时,使用java IO流写入CSV文件中,中间使用逗号分隔,一个portal多个组件时,使用==============================字符串以及3个空行进行隔开识别。
当所述导出类型为HTML时,先导出Excel到指定路径中,再使用Openoffice将Excel转换成HTML文件到指定路径中。Openoffice具体使用细节,如附图3所示。
当所述导出类型为PDF时,先导出Excel到指定路径中,再使用Openoffice将Excel转换成PDF文件到指定路径中。Openoffice具体使用细节,如附图3所示。
当所述导出类型为Excel时,后台解析布局获取的组件为表格或者图形。
当后台解析布局获取的组件为表格数据源时,使用Apache POI将表格写入Excel指定布局中,生成Excel到指定路径中即可。Apache POI具体操作细节,如附图4所示。
后台解析布局获取的组件为图形数据源时,使用PhantomJS生成图片,使用ApachePOI把图片写入Excel指定布局中,生成Excel到指定路径中。Apache POI具体操作细节,如附图4所示。
使用PhantomJS生成图片时,入参:前台单页面渲染应用接口,出参:生成UUID指定路径图片,PNG/JPG。PhantomJS具体使用操作,如附图2所示。
该实现后台服务器导出前台界面的方法,前期准备工作包括安装phantomJS,openoffice和Apache POI。
一、安装phantomJS
步骤101:phantomJS官网(http://phantomjs.org/download.html)下载Linux安装包,解压缩到Linux系统某个目录。例如
/opt/netwatcher/pm4h2/app/opt/phantomjs-2.1.1-linux-x86_64
根据phantomJSAPI要求填写脚本代码。
步骤102:调试phantomJS的导出脚本,具体API请参考官网详细解释http://phantomjs.org/。
步骤103:由java调用Linux shell脚本,shell命令调用phantomJS提供的截屏命令+创建的phantomJS的脚本文件。
步骤104:由步骤:103加第二个参数为resource文件,第三个参数为target目标文件;
Resource:资源生成,一个前台url接口,此url传递portalid和组件id可以渲染出图形(即:单个组件渲染接口)。
Target:目标文件,由Resource生产的图形,截屏方式写入到那个路径里面去。图片名称PNG/JPG格式,图片名称自定义。
二、安装openoffice
步骤201:下载openoffice,官网下载地址:
http://www.openoffice.org/download/index.html
下载后解压缩到指定目录,例如:/opt/netwatcher/pm4h2/app/opt/openoffice4
Openoffice服务终止与启动
步骤202:测试是否启动,查看openoffice进程:
ps–ef|grep office
步骤203:由java连接openoffice服务时,需要新增jar
<dependency>
<groupId>com.artofsolving</groupId>
<artifactId>jodconverter</artifactId>
<version>2.2.1</version>
</dependency>
步骤204:导出为PDF或HTML格式时,
初始化openoffice连接;
设置转换格式;
设置缩放,高宽、页面布局等。
步骤205:由204初始化完成进行调用接口
调用openoffice提供的转换接口,进行转换。
步骤206:由步骤205调用openoffice转换接口时,同时传递3个参数(inputFile、outputFile、docFormat)
inputFile:Excel文件路径
outputFile:转换的PDF/HTML,生成文件的路径
docFormat:导出格式,由DocumentFormat创建。
三、安装Apache POI
步骤301:下载Apache POI,下载地址:
https://www.apache.org/dyn/closer.lua/poi/release/bin/poi-bin-3.17-20170915.tar.gz
项目中需要加入以下jar包:
poi-3.17.jar
poi.examples-3.17.jar
poi.excelant-3.17.jar
poi-ooxml-3.17.jar
poi-ooxml-schemas-3.17.jar
poi-scratchpad-3.17.jar
步骤302:由步骤301添加完jar包后,调试jar包与项目的兼容情况。
步骤303:由java调用Apache POI接口(HSSFWorkbook、HSSFSheet)
HSSFWorkbook:excel工作簿接口;
HSSFSheet:excel sheet页接口。
步骤305:如附图1所示,步骤(1)获取到布局信息,使用Apache POI,在一个sheet页中实现行列布局
步骤306:由步骤303创建完sheet页对象后,创建行(HSSFRow),循环按行一个个封装成HSSFRow对象,最后,创建excel文件到指定目录,HSSFWorkbook对象写入到excel中。
步骤307:由步骤303创建完成sheet页对象后,sheet中创建HSSFPatriarch图片对象。设定图片占用的单元格,图片属性,由HSSFClientAnchor对象创建。

Claims (8)

1.一种实现后台服务器导出前台界面的方法,其特征在于:web服务器安装phantomjs组件,基于后台java服务结合phantomjs组件命令方式进行导出前台界面;所述phantomjs组件采用截屏方式进行导出,省去了java或第三方组件自行拼接图形或表格的麻烦;其他服务器调用前台界面时,传入页面的portal id后调用服务器的导出接口即可,省去了其他服务器获取数据、渲染页面的麻烦;前台导出portal时,后台提供portal的行列布局信息,导出到excel文件、pdf文件或html文件中即可。
2.根据权利要求1所述的实现后台服务器导出前台界面的方法,其特征在于,具体包括以下步骤:
(1)由前台触发导出按钮流程,后台获取页面传递的Portal id,在数据库中获取portal布局信息;
(2)后台获取到布局信息后解析布局,获取布局行、列和组件id信息;
(3)根据获取到的组件id信息解析获取组件的原始数据源,供前台单页面应用使用;
(4)获取前台传递的导出类型,并根据导出类型引流分支操作即可。
3.根据权利要求2所述的实现后台服务器导出前台界面的方法,其特征在于:所述步骤(1)中,前台触发导出按钮流程后,向后台发出Portal id信息,导出类型信息和时间戳信息。
4.根据权利要求3所述的实现后台服务器导出前台界面的方法,其特征在于:所述导出类型包括CSV,HTML,Excel和PDF。
5.根据权利要求4所述的实现后台服务器导出前台界面的方法,其特征在于:当所述导出类型为CSV时,使用java IO流写入CSV文件中,中间使用逗号分隔,一个portal多个组件时,使用字符串以及3个空行进行隔开识别。
6.根据权利要求4所述的实现后台服务器导出前台界面的方法,其特征在于:当所述导出类型为HTML时,先导出Excel到指定路径中,再使用Openoffice将Excel转换成HTML文件到指定路径中。
7.根据权利要求4所述的实现后台服务器导出前台界面的方法,其特征在于:当所述导出类型为PDF时,先导出Excel到指定路径中,再使用Openoffice将Excel转换成PDF文件到指定路径中。
8.根据权利要求4、6或7任意一项所述的实现后台服务器导出前台界面的方法,其特征在于:当所述导出类型为Excel时,后台解析布局获取的组件为表格或者图形;
当后台解析布局获取的组件为表格数据源时,使用Apache POI将表格写入Excel指定布局中,生成Excel到指定路径中即可;
后台解析布局获取的组件为图形数据源时,使用PhantomJS生成图片,使用Apache POI把图片写入Excel指定布局中,生成Excel到指定路径中。
CN201910072306.0A 2019-01-25 2019-01-25 一种实现后台服务器导出前台界面的方法 Pending CN109815645A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910072306.0A CN109815645A (zh) 2019-01-25 2019-01-25 一种实现后台服务器导出前台界面的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910072306.0A CN109815645A (zh) 2019-01-25 2019-01-25 一种实现后台服务器导出前台界面的方法

Publications (1)

Publication Number Publication Date
CN109815645A true CN109815645A (zh) 2019-05-28

Family

ID=66605108

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910072306.0A Pending CN109815645A (zh) 2019-01-25 2019-01-25 一种实现后台服务器导出前台界面的方法

Country Status (1)

Country Link
CN (1) CN109815645A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112733503A (zh) * 2021-01-22 2021-04-30 浪潮卓数大数据产业发展有限公司 一种基于poi的html表格生成excel的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153636A (zh) * 2017-04-18 2017-09-12 北京思特奇信息技术股份有限公司 一种实现以pdf格式快速导出业务数据的方法及系统
CN108153845A (zh) * 2017-12-19 2018-06-12 北京天元创新科技有限公司 一种实现后台图像数据导出的方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107153636A (zh) * 2017-04-18 2017-09-12 北京思特奇信息技术股份有限公司 一种实现以pdf格式快速导出业务数据的方法及系统
CN108153845A (zh) * 2017-12-19 2018-06-12 北京天元创新科技有限公司 一种实现后台图像数据导出的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
佚名: "Highcharts结合PhantomJS在服务端生成高质量的图表图片", 《HTTPS://WWW.CNBLOGS.COM/JASONDAN/P/3504120.HTML》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112733503A (zh) * 2021-01-22 2021-04-30 浪潮卓数大数据产业发展有限公司 一种基于poi的html表格生成excel的方法

Similar Documents

Publication Publication Date Title
US7870482B2 (en) Web browser extension for simplified utilization of web services
CN110198247B (zh) 接口测试方法及系统
CN101697139B (zh) 一种远程过程调用方法、装置和注册库
CN103309660B (zh) 移动应用跨平台开发方法
CN111158818A (zh) 一种页面渲染方法和装置
US20140122996A1 (en) Method, system, and program for automatic generation of screens for mobile apps based on back-end services
CN111338623B (zh) 一种开发用户界面的方法、装置、介质和电子设备
CN104821954A (zh) 一种跨平台远程过程调用方法
CN107122398B (zh) 一种数据展示图表生成方法及系统
CN102609264A (zh) 一种调用应用程序编程接口生成调用代码的方法及装置
CN104536890A (zh) 测试系统、方法和装置
CN102323880A (zh) 基于浏览器解析方式的手机应用界面的开发方法和终端
CN101482817A (zh) 基于黑盒的大粒度Java构件组装方法
CN112328342B (zh) 基于在线文档的待办事项处理方法及装置
CN111857658A (zh) 一种渲染动态组件的方法、装置、介质和电子设备
Rischpater JavaScript JSON Cookbook
CN114706579A (zh) 页面开发方法、装置、服务器及存储介质
CN113076294A (zh) 一种信息分享方法和装置
CN111723314B (zh) 网页展示方法、装置、电子设备及计算机可读存储介质
CN101876998B (zh) 一种实现数据编辑的方法和系统
CN113778897B (zh) 接口的自动测试方法、装置、设备及存储介质
CN113590465B (zh) 一种基于SDK自动生成mock服务的方法
CN104516963A (zh) 一种Excel数据服务器及其应用
CN109815645A (zh) 一种实现后台服务器导出前台界面的方法
CN111124924B (zh) Api部署方法、装置、电子设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190528