使用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"
		]
	}
}
相关推荐
之歆5 小时前
Spring AI入门到实战到原理源码-MCP
java·人工智能·spring
yangminlei5 小时前
Spring Boot3集成LiteFlow!轻松实现业务流程编排
java·spring boot·后端
qq_318121595 小时前
互联网大厂Java面试故事:从Spring Boot到微服务架构的技术挑战与解答
java·spring boot·redis·spring cloud·微服务·面试·内容社区
J_liaty5 小时前
Spring Boot整合Nacos:从入门到精通
java·spring boot·后端·nacos
阿蒙Amon6 小时前
C#每日面试题-Array和ArrayList的区别
java·开发语言·c#
daidaidaiyu6 小时前
Spring IOC 源码学习 一文学习完整的加载流程
java·spring
2***d8856 小时前
SpringBoot 集成 Activiti 7 工作流引擎
java·spring boot·后端
五阿哥永琪6 小时前
Spring中的定时任务怎么用?
java·后端·spring
gelald7 小时前
AQS 工具之 CountDownLatch 与 CyclicBarry 学习笔记
java·后端·源码阅读
better_liang7 小时前
每日Java面试场景题知识点之-XXL-JOB分布式任务调度实践
java·spring boot·xxl-job·分布式任务调度·企业级开发