java通用xls导出设计
背景
在后端日常开发中总会有各种各样的导出需求,实现这个需求必须要解决的两个问题:
1、表头不能直接使用字段名,需要显示为中文,甚至还需要考虑国际化
2、值需要翻译,比如性别、状态之类的字段
现状
现在主流写的比较好的方法是定义一个对象,对象上用自定义的注解+easytrans
我的解决方案
定义要导入的字段
1、解决表头与字段的映射
2、表头加#进行后续split,解决翻译问题
{
"parkls": {
"parkname": "停车场",
"carno": "车牌号",
"intime": "进场时间",
"outtime": "出场时间",
"paytime": "支付时间",
"parktime": "停车时长(单位:分钟)",
"amt":"支付金额(单位:元)",
"paytype":"支付方式#paytype",
"paystatus":"支付状态#paystatus",
"isrecharge":"是否重新计费#YN",
"ismonthcard":"是否月卡抵扣#YN"
}
}
翻译
{
"YN": {
"Y": "是",
"N": "否"
},
"paystatus": {
"0": "待支付",
"1": "已支付",
"2": "已过期"
},
"paytype":{
"0": "微信支付",
"1": "月卡支付",
"2": "现金",
"3":"余额"
}
}
加载配置
package com.xf.tools; import java.io.File;
import java.io.FileNotFoundException;
import java.net.URL;
import java.nio.charset.Charset; import cn.hutool.core.io.FileUtil;
import cn.hutool.json.JSONConfig;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.val; public class ExcelDeal { public static JSONObject head;
public static JSONObject trans; public synchronized static void load() throws FileNotFoundException {
URL url = ClassLoader.getSystemResource("exporthead.json");
// head = JSONUtil.readJSONObject(new File(url.getPath()), Charset.forName("utf-8"));
String jsonstr = FileUtil.readString(new File(url.getPath()), Charset.forName("utf-8"));
val config = JSONConfig.create().setOrder(true);
head = JSONUtil.parseObj(jsonstr, config);
url = ClassLoader.getSystemResource("trans.json");
// trans = JSONUtil.readJSONObject(new File(url.getPath()), Charset.forName("utf-8"));
jsonstr = FileUtil.readString(new File(url.getPath()), Charset.forName("utf-8"));
trans = JSONUtil.parseObj(jsonstr, config);
}
}
写xls
这个方法我就不上了,留点大家发挥的空间。
主要是分享下自已的思路,欢迎大家交流。
java通用xls导出设计的更多相关文章
- 一个方便且通用的导出数据到 Excel 的类库
一个方便且通用的导出数据到 Excel 的类库 起源: 之前在做一个项目时,客户提出了许多的导出数据的需求: 导出用户信息 导出业务实体信息 各种查询都要能导出 导出的数据要和界面上看到的一致 可以分 ...
- 转:二十七、Java图形化界面设计——容器(JFrame)
转:http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的, ...
- 二十七、Java图形化界面设计——容器(JFrame)
摘自http://blog.csdn.net/liujun13579/article/details/7756729 二十七.Java图形化界面设计--容器(JFrame) 程序是为了方便用户使用的, ...
- Java图形化界面设计——容器(JFrame)
Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...
- java通用抹去魔,在边界行动,擦除补偿
java通用抹去魔 package org.rui.generics.erasure; public class HasF { public void f(){ System.out.println( ...
- java导入、导出Excel文件
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- Atitit 通用接口的设计与实现attilax 总结
Atitit 通用接口的设计与实现attilax 总结 1.1. 现存的情况1 1.2. 接口返回类型,与返回序列化格式1 1.3. 异常传递 代替返回值模式1 1.4. 通用接口原理1 1.5. A ...
- 01 Java图形化界面设计——容器(JFrame)
程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构,现在就进入java图形化界面编程. 一.Jav ...
- Java中导入导出Excel -- POI技术
一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实 ...
- java导入、导出
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
随机推荐
- RPA现阶段的问题
RPA(Robotic Process Automation)全称机器人流程自动化,作为"自动化为先"时代的翘楚和先驱,被广泛地用来代替人类自动执行任务,越来越多的领域.企业和人开 ...
- DNS BIND之dnssec安全
公司一大早域名解析出问题了,网抓项目都无法抓取到进销存数据. 查询后发现是运维周末重启了dns服务. 网上找到的解决方法: 在BIND的配置文件(/etc/named.conf)中打开DNSSEC选项 ...
- 宕机了,Redis如何避免数据丢失?
Redis的持久化主要有两大机制,即AOF日志和RDB快照 AOF日志 1.2 AOF日志是如何实现的? 说到⽇志,我们⽐较熟悉的是数据库的写前⽇志(Write Ahead Log, WAL)-- ...
- SpringCloud Ribbon 负载均衡
Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具.可以将面向服务的 REST 模板请求自动转化成客户端负载均衡的服务调用.Spring Cloud Rib ...
- 【随笔】Axios delete传递数组问题
pre { overflow-y: auto; max-height: 300px } img { max-width: 500px; max-height: 300px } Axios delete ...
- Unity3D中的Attribute详解(五)
今天主要来讲一下Unity中带Menu的Attribute. 首先是AddComponentMenu.这是UnityEngine命名空间下的一个Attribute. 按照官方文档的说法,会在Compo ...
- ICMP隐蔽隧道攻击分析与检测(四)
• ICMP隧道攻击通讯特征和特征提取 一.ICMP Ping正常通讯特征总结 一个正常的 ping 每秒最多只会发送两个数据包,而使用 ICMP隧道的服务器在同一时间会产生大量 ICMP 数据包 正 ...
- Nginx主要功能
Nginx主要功能: 1.反向代理2.负载均衡3.HTTP服务器(包含动静分离)4.正向代理 一.反向代理 反向代理应该是 Nginx 做的最多的一件事了,什么是反向代理呢,以下是百度百科的说法:反向 ...
- 粘包,自定义协议,struct模块,粘包解决终极大招
粘包: 1.粘包问题出现的原因: (udp不会出现粘包问题) 1.1.tcp是流式协议,数据像水流一样黏在一起,没有任何边界区分 1.2.收数据没收干净,有残留,就会下一次结果混淆在一起去(客户端接受 ...
- PHP创建SqlLite数据表并让ID自增
<?php class MyDB extends SQLite3 { function __construct() { $this->open('test.db'); } } $db = ...