使用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"
		]
	}
}
相关推荐
愚公移码2 分钟前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端
驰骋工作流10 分钟前
流程引擎BPM设计之:流程消息
java·工作流引擎·bpm·jflow·ccflow
dogstarhuang16 分钟前
从 0 到 1 搭建可收费的 API 开放平台(实战)
java·架构·api
程序猿乐锅21 分钟前
【苍穹外卖 Day12| Excel 入门】
excel
VortMall1 小时前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
吴声子夜歌1 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
Java面试题总结1 小时前
mybatis插件
java·tomcat·mybatis
橘子海全栈攻城狮2 小时前
【最新源码】基于SpringBoot + Vue的超市管理系统的设计与实现D002
java·开发语言·vue.js·spring boot·后端·spring
smartvxworks2 小时前
Linux 实时内核(Linux Real-Time Kernel)详解:原理、实践与优化
java·linux·服务器
qizayaoshuap2 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos