基于JAVA实现HTML表格导出EXCEL的方法与流程

    专利2022-07-08  96

    本发明涉及计算机
    技术领域
    :,一种使用java语言开发的将html格式的表格转换为excel表格文件的方法。
    背景技术
    ::在各种浏览器访问的系统中,往往有大量的数据需要生成到excel文件,方便业务人员离线对数据进行加工、传递、分析、打印等。而html是目前运用最广的前端展示语言,几乎所有的线上系统的界面展示都会使用,所以如果能将html中展示的内容直接生成到excel,生成的excel的内容即用户看到的html界面上展示的内容,那么将给系统使用人员带来极大便利。现有技术存在的缺点如下所示:1、使用客户端技术,依赖客户端用户软件环境,且用户需要设置浏览器相关配置,操作复杂;现有技术是使用前端技术javascript来实现html表格导出到excel,需要客户端用户安装excel,由于使用了ie浏览器专用控件activex,那么该功能只能在ie浏览器中使用。2、使用已经被淘汰的浏览器,推广难度大,应用场景小;ie浏览器由于其局限性和不规范性,已经逐渐被市场淘汰,装机率远低于chrome等主流浏览器,目前大量新开发的系统已不再支持老版本的ie浏览器。3、使用已经被淘汰的前端技术,存在安全隐患;由于javascript直接使用activex控件存在一定的安全隐患,所以ie浏览器也默认设置是不启用,用户必须在浏览器中进行如下设置:工具->internet选项->安全->自定义级别->将activex控件设置为启用。在公开号cn105446944a的发明专利“基于javascript实现html表格导出excel的方法”这篇专利中,基于javascript实现html表格导出excel的方法,是基于网页前端技术javascript实现html表格导出excel的方法。实现html表格导出excel,存在过度依赖客户端环境和用户操作、实现功能比较复杂、推广难度大、应用场景小、存在一定的安全隐患等问题。因此,需要对现有技术进行改进。技术实现要素:本发明要解决的技术问题是提供一种高效的基于java实现html表格导出excel的方法。为解决上述技术问题,本发明提供一种基于java实现html表格导出excel的方法,包括以下步骤:1)、定义需要展示的表格html代码;2)、将表格html代码发送到服务器端:3)、服务器端接收到客户端发送的表格html代码,使用java解析表格的html元素;java使用jsoup将表格html代码的各元素解析出来作为table信息;4)、根据table信息生成excel文件。作为对本发明基于java实现html表格导出excel的方法的改进:还包括步骤5):服务器端将生成的excel文件返回给客户端。作为对本发明基于java实现html表格导出excel的方法的改进:在步骤4)中:java使用poi将步骤3)解析得到的table信息生成excel文件。作为对本发明基于java实现html表格导出excel的方法的改进:在步骤1)中;定义需要展示的表格html代码包括html中定义表格的标签及其相关子标签。作为对本发明基于java实现html表格导出excel的方法的改进:在步骤1)中;定义表格的table标签,定义表格行的tr标签,定义表格标题列的th标签,以及定义表格列的td标签,每个标签定义相关属性参数来达到各种表格展示效果,width属性定义展示的宽度,height属性定义展示的高度,rowspan属性定义需要合并的行,colspan属性定义需要合并的列,通过style属性定义字体、字体大小、颜色、位置信息。作为对本发明基于java实现html表格导出excel的方法的改进:在步骤1)中,根据服务器端解析html生成excel的自定义规则,扩展标签的属性,实现一些更高级的功能;在table标签上定义nextsheet=”true”属性,则可实现将表格导出到多个sheet页中,定义sheetname=”sheet页名称”,这可实现自定义excel文件中sheet页的名称;在td标签中定义datatype=”number”属性,可自定义导出到excel中的数据的类型是数字还是文本。作为对本发明基于java实现html表格导出excel的方法的改进:在步骤3)中;通过获取tr、td、th元素来定义excel的行和列,通过获取rowspan和colspan元素来计算excel的合并行和合并列;通过td或th元素的text属性获取需要输出到excel表格中的数据,需要输出到excel表格中的数据即用户在页面上的表格中所看到的数据信息;通过td或th元素的style属性获取表格的样式来定义excel表格的宽度、高度、颜色、字号、展示位置等信息。作为对本发明基于java实现html表格导出excel的方法的改进:通过table标签中的nextsheet=true属性,定义在一个excel文件中生成多个sheet页通过td标签中的datatype=number属性,定义该列生成的excel数据格式为数字类型。本发明是通过jsoup解析出来的html元素(html元素可根据业务需要进行自定义扩展),组装出poi生成excel所需的元素,来实现html直接导出为excel文件的功能。本发明基于java实现html表格导出excel的方法的技术优势为:本发明与cn105446944a相比,通过服务器端解析html表格生成excel的方法对客户端环境无任何依赖,使用该技术开发的系统应用推广范围更广,更加安全可靠,可做到用户无感操作(用户只用在页面点击一下鼠标即可实现html表格生成excel文件并下载,不用再进行复杂的浏览器设置)。本发明将使用服务器端技术java来实现html表格导出excel,用户可以在页面一键生成excel文件,且不再依赖客户端浏览器及版本,也不存在安全隐患。附图说明下面结合附图对本发明的具体实施方式作进一步详细说明。图1是基于java实现html表格导出excel的方法的流程示意图。具体实施方式下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此。实施例1、基于java实现html表格导出excel的方法,如图1所示;本发明的基于java实现html表格导出excel文件主要分为定义html表格、将html表格代码发送到服务器端、解析表格的html元素、生成excel文件、下载excel文件几个步骤。其中:1)、定义html表格:根据各业务场景,定义需要展示的表格html代码。定义需要展示的表格html代码主要包括html中定义表格的标签及其相关子标签,比如定义表格的table标签,定义表格行的tr标签,定义表格标题列的th标签,以及定义表格列的td标签等,每个标签也可定义相关属性参数来达到各种表格展示效果,比如width属性定义展示的宽度,height属性定义展示的高度,rowspan属性定义需要合并的行,colspan属性定义需要合并的列,还可以通过style属性定义字体、字体大小、颜色、位置等信息,具体可参考标准的html和css规范。由于html规范允许自定义标签以及标签属性,所以此处可以根据服务器端解析html生成excel的自定义规则,扩展标签的属性,实现一些更高级的功能,比如在table标签上定义nextsheet=”true”属性,则可实现将表格导出到多个sheet页中,定义sheetname=”sheet页名称”,这可实现自定义excel文件中sheet页的名称;还比如在td标签中定义datatype=”number”属性,可自定义导出到excel中的数据的类型是数字还是文本等,以此类推可以实现更多类似功能。2)、将表格html代码发送到服务器端:用户点击【生成excel】按钮或其它需要将看到的表格导出到excel文件的按钮,客户端将表格html代码通过服务器端开放的接口发送给服务器。3)、解析表格的html元素:服务器端接收到客户端发送的表格html代码,使用java解析表格的html元素。java使用jsoup将表格html代码的各元素解析出来;然后通过获取tr、td、th元素来定义excel的行和列,通过获取rowspan和colspan元素来计算excel的合并行和合并列;通过td或th元素的text属性获取需要输出到excel表格中的数据,需要输出到excel表格中的数据即用户在页面上的表格中所看到的数据信息。比如一个学生信息数据的表格,包含了标题行:姓名、性别、班级,以及10条学生信息,那么这里描述的数据就是,这个表格中所有的标题以及10条对应的学生信息。通过td或th元素的style属性获取表格的样式来定义excel表格的宽度、高度、颜色、字号、展示位置等信息。excel表格中的数据、excel表格的宽度、高度、颜色、字号、展示位置等信息,这些信息定义了表格中的数据,表格以及表格中数据的展示效果,比如数据行的高度、数据列的宽度,文字的字体是宋体还是微软雅黑等,文字的颜色是红色还是黑色等,文字是居左还是居右展示等,生成excel文件时同样会按照此效果进行生成。这些信息是共同作为table信息的。此处也可利用html标签语言的特性,在步骤1中自定义一些html表格属性,实现一些更高级的功能,比如在table标签中定义nextsheet=true属性,则可实现在一个excel文件中生成多个sheet页;还比如在td标签中定义datatype=number属性,可以自定义该列生成的excel数据格式为数字类型等。nextsheet=true属性和datatype=number属性等也共同作为table信息。4)、生成excel文件:java使用poi将解析完毕的table信息生成excel文件。5)、下载excel文件:服务器端将生成的excel文件返回给客户端,用户可直接下载文件。最后,还需要注意的是,以上列举的仅是本发明的若干个具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。当前第1页1 2 3 当前第1页1 2 3 
    技术特征:

    1.基于java实现html表格导出excel的方法,其特征在于:包括以下步骤:

    1)、定义需要展示的表格html代码;

    2)、将表格html代码发送到服务器端:

    3)、服务器端接收到客户端发送的表格html代码,使用java解析表格的html元素;java使用jsoup将表格html代码的各元素解析出来作为table信息;

    4)、根据table信息生成excel文件。

    2.根据权利要求1所述的基于java实现html表格导出excel的方法,其特征在于:还包括步骤5):

    服务器端将生成的excel文件返回给客户端。

    3.根据权利要求2所述的基于java实现html表格导出excel的方法,其特征在于:

    在步骤4)中:

    java使用poi将步骤3)解析得到的table信息生成excel文件。

    4.根据权利要求3所述的基于java实现html表格导出excel的方法,其特征在于:

    在步骤1)中;

    定义需要展示的表格html代码包括html中定义表格的标签及其相关子标签。

    5.根据权利要求4所述的基于java实现html表格导出excel的方法,其特征在于:

    在步骤1)中;

    定义表格的table标签,定义表格行的tr标签,定义表格标题列的th标签,以及定义表格列的td标签,每个标签定义相关属性参数来达到各种表格展示效果,width属性定义展示的宽度,height属性定义展示的高度,rowspan属性定义需要合并的行,colspan属性定义需要合并的列,通过style属性定义字体、字体大小、颜色、位置信息。

    6.根据权利要求5所述的基于java实现html表格导出excel的方法,其特征在于:

    在步骤1)中,根据服务器端解析html生成excel的自定义规则,扩展标签的属性,实现一些更高级的功能;

    在table标签上定义nextsheet=”true”属性,则可实现将表格导出到多个sheet页中,定义sheetname=”sheet页名称”,这可实现自定义excel文件中sheet页的名称;在td标签中定义datatype=”number”属性,可自定义导出到excel中的数据的类型是数字还是文本。

    7.根据权利要求6所述的基于java实现html表格导出excel的方法,其特征在于:

    在步骤3)中;

    通过获取tr、td、th元素来定义excel的行和列,通过获取rowspan和colspan元素来计算excel的合并行和合并列;

    通过td或th元素的text属性获取需要输出到excel表格中的数据,需要输出到excel表格中的数据即用户在页面上的表格中所看到的数据信息;

    通过td或th元素的style属性获取表格的样式来定义excel表格的宽度、高度、颜色、字号、展示位置等信息。

    8.根据权利要求7所述的基于java实现html表格导出excel的方法,其特征在于:

    通过table标签中的nextsheet=true属性,定义在一个excel文件中生成多个sheet页

    通过td标签中的datatype=number属性,定义该列生成的excel数据格式为数字类型。

    技术总结
    本发明提供一种基于JAVA实现HTML表格导出EXCEL的方法,包括以下步骤:1)、定义需要展示的表格HTML代码;2)、将表格HTML代码发送到服务器端:3)、服务器端接收到客户端发送的表格HTML代码,使用JAVA解析表格的HTML元素;JAVA使用JSOUP将表格HTML代码的各元素解析出来作为TABLE信息;4)、根据TABLE信息生成EXCEL文件。本发明是通过JSOUP解析出来的HTML元素(HTML元素可根据业务需要进行自定义扩展),组装出POI生成EXCEL所需的元素,来实现HTML直接导出为EXCEL文件的功能。本发明将使用服务器端技术JAVA来实现HTML表格导出EXCEL,用户可以在页面一键生成EXCEL文件,且不再依赖客户端浏览器及版本,也不存在安全隐患。

    技术研发人员:李贤威
    受保护的技术使用者:社宝信息科技(上海)有限公司
    技术研发日:2020.12.15
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-21268.html

    最新回复(0)