使用xml模板导出excel

下面这种表格如何使用xml导出呢?

xml代码

xml 复制代码
<?xml version="1.0" encoding="UTF-8"?>
<tables>
    <styles>
        <style id="h1" font.fontheightinpoints="14" font.fontname="黑体" alignment="center"
               border="1" vertical="center"/>
        <style id="h2" font.fontheightinpoints="14" font.fontname="黑体" alignment="center"
               border="1" vertical="center"/>
        <style id="header_cell_center_bold" font.fontheightinpoints="12" font.fontname="黑体" alignment="center"
               border="1" vertical="center"/>
        <style id="header_cell_center_bold_h2" font.fontheightinpoints="12" font.fontname="黑体" alignment="left"
               border="1" vertical="center"/>
        <style id="content_cell_center" font.fontheightinpoints="10" font.fontname="宋体" alignment="center" border="1"
               wrapText="true" vertical="center"/>
        <style id="content_cell_left" font.fontheightinpoints="12" font.fontname="黑体" alignment="left" border="1"
               wrapText="true" vertical="center"/>
    </styles>
    <table name="总体情况">
    #if($dataMap['jibqk']!=$null && $dataMap['jibqk'].rows.size()>0)
        <tr>
            <td styleId="content_cell_left"  colspan="6">基本情况</td>
        </tr>
        <tr>
        #foreach($row in $dataMap['jibqk'].rows)
            <td styleId="content_cell_center"  width="14">$row.cells.name</td>
            <td styleId="content_cell_center"  width="6">$row.cells.data_c</td>
        #set($remainder = $foreach.count%3)
        #if($remainder==0)
        </tr>
        <tr>
<!--$remainder..2 作用:因为总共六列,集合数据中,第一列和第二列一定会有值,所以remainder的值为0(循环2次),1(循环1次),2(循环0次) 每循环一次会增加两列,最多增加4列-->        #elseif($foreach.count==$dataMap['jibqk'].rows.size())
            #foreach($i in [$remainder..2])
            <td styleId="content_cell_center"  width="14"></td>
            <td styleId="content_cell_center"  width="6"></td>
            #end
        #end
        #end
        </tr>
    #end

    #if($dataMap['tongzds']!=$null && $dataMap['tongzds'].rows.size()>0)
    <tr>
        <td styleId="content_cell_left"  colspan="6">通知单</td>
    </tr>
    <tr>
        #foreach($row in $dataMap['tongzds'].rows)
        <td styleId="content_cell_center"  width="14">$row.cells.tzd_doctype_name</td>
        <td styleId="content_cell_center"  width="6">$row.cells.prj_c</td>
        #set($remainder = $foreach.count%3)
        #if($remainder==0)
    </tr>
    <tr>
        #elseif($foreach.count==$dataMap['tongzds'].rows.size())
        #foreach($i in [$remainder..2])
        <td styleId="content_cell_center"  width="14"></td>
        <td styleId="content_cell_center"  width="6"></td>
        #end
        #end
        #end
    </tr>
    #end

    #if($dataMap['fankfs']!=$null && $dataMap['fankfs'].rows.size()>0)
        <tr>
            <td styleId="content_cell_left"  colspan="6">反馈方式</td>
        </tr>
        <tr>
        #foreach($row in $dataMap['fankfs'].rows)
            <td styleId="content_cell_center"  width="14">$row.cells.feedback_type_name</td>
            <td styleId="content_cell_center"  width="6">$row.cells.prj_c</td>
            #set($remainder = $foreach.count%3)
            #if($remainder==0)
            </tr>
            <tr>
            #elseif($foreach.count==$dataMap['fankfs'].rows.size())
                #foreach($i in [$remainder..2])
                <td styleId="content_cell_center"  width="14"></td>
                <td styleId="content_cell_center"  width="6"></td>
                #end
            #end
        #end
        </tr>
    #end
    </table>
</tables>

后端返回的数据结构

json 复制代码
{
	"jibqk": {
		"rows": [
			{
				"cells": {
					"name": "总量",
					"params": {},
					"data_c": 304
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			},
			{
				"cells": {
					"name": "办理中",
					"params": {
						"handleStatus": "10"
					},
					"data_c": 291
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			},
			{
				"cells": {
					"name": "已办结",
					"params": {
						"handleStatus": "30"
					},
					"data_c": 12
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			},
			{
				"cells": {
					"name": "未到期",
					"params": {
						"emptyFinishLimitDate": "contain",
						"handleStatus": "10",
						"finishLimitDateBegin": "2025-04-10"
					},
					"data_c": 246
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			},
			{
				"cells": {
					"name": "超期未办结",
					"params": {
						"finishLimitDateEnd": "2025-04-09",
						"handleStatus": "10"
					},
					"data_c": 45
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			},
			{
				"cells": {
					"name": "按时办结",
					"params": {
						"handleStatus": "30",
						"prjOverDue": false
					},
					"data_c": 10
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			},
			{
				"cells": {
					"name": "超期办结",
					"params": {
						"handleStatus": "30",
						"prjOverDue": true
					},
					"data_c": 2
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 3
			}
		],
		"columns": [
			"name",
			"params",
			"data_c"
		]
	},
	"fankfs": {
		"rows": [
			{
				"cells": {
					"prj_c": 56,
					"feedback_type_name": "督查专报",
					"feedback_type_id": "12a71a3e2ea24b75a76152654f94101c",
					"params": {
						"feedbackTypeId": "12a71a3e2ea24b75a76152654f94101c"
					}
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 4
			}
		],
		"columns": [
			"prj_c",
			"feedback_type_name",
			"feedback_type_id",
			"params"
		]
	},
	"tongzds": {
		"rows": [
			{
				"cells": {
					"prj_c": 154,
					"tzd_doctype_id": "912f2c748c284c369e008b9ea3a4da95",
					"tzd_doctype_name": "督查通知单",
					"params": {
						"tzdDoctypeId": "912f2c748c284c369e008b9ea3a4da95"
					}
				},
				"subDs": null,
				"joined": false,
				"closCount": 1,
				"cellSize": 4
			}
		],
		"columns": [
			"prj_c",
			"tzd_doctype_id",
			"tzd_doctype_name",
			"params"
		]
	}
}
相关推荐
BillKu2 小时前
Java + Spring Boot + Mybatis 实现批量插入
java·spring boot·mybatis
YuTaoShao2 小时前
Java八股文——集合「Map篇」
java
有梦想的攻城狮4 小时前
maven中的maven-antrun-plugin插件详解
java·maven·插件·antrun
Abigail_chow7 小时前
EXCEL如何快速批量给两字姓名中间加空格
windows·microsoft·excel·学习方法·政务
硅的褶皱7 小时前
对比分析LinkedBlockingQueue和SynchronousQueue
java·并发编程
MoFe17 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
季鸢8 小时前
Java设计模式之观察者模式详解
java·观察者模式·设计模式
Fanxt_Ja8 小时前
【JVM】三色标记法原理
java·开发语言·jvm·算法
Mr Aokey9 小时前
Spring MVC参数绑定终极手册:单&多参/对象/集合/JSON/文件上传精讲
java·后端·spring
小马爱记录9 小时前
sentinel规则持久化
java·spring cloud·sentinel