使用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"
		]
	}
}
相关推荐
nanxun88620 小时前
记一次诡异的 Docker 容器"串包"故障排查
java
用户1563068103511 天前
Day01 | Java 基础(Java SE)
java
行者全栈架构师1 天前
Maven dependency:tree 的 8 个高级用法
java·后端
行者全栈架构师1 天前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端
令人头秃的代码0_01 天前
mac(m5)平台编译openjdk
java
唐青枫2 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马2 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261352 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261352 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454753 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程