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打印.这样在我们实际 ...
随机推荐
- jsp页面中的正则表达式--主要用于js判断文本格式
一.方括号[] 举例: 二.^ 三.元字符 举例的话,就可以这么说,要实现要表示整数的话: []就表示输入的文本框里面的数字的第一位,可以这么写--->[1-9] 然后已知\d表示的与[0-9] ...
- PicGo+Typora+Github图床配置步骤(一键上传本地图片)
PicGo+Typora+Github图床配置步骤(一键上传本地图片) 一.配置前的准备 首先你需要有一个Github账号[GitHub]. 然后下载PicGo图片上传工具[PicGo]和Typora ...
- MybatisPlus------代码生成器
快速开发: 代码生成器: (1)模版:MyBatisPlus提供 (2)数据库相关配置:读取数据库获取信息 (3)开发者自定义配置:手工配置 package com.ithema; import co ...
- 获得New Bing资格后,在Ubuntu环境下使用New Bing
技术背景 如今基于GPT-4的New Bing,结合搜索引擎的功能,可以说已经达到了非常高的智力水平.虽说ChatGPT的出现打击了很多的行业,但是对我们来说也未必不是一种机遇.合理的使用ChatGP ...
- salesforce零基础学习(一百二十五)零基础学习SF路径
本篇参考: https://boulder-bard-27f.notion.site/Salesforce-Learning-e990864695674f07b99a5f8955770bd4 本篇背景 ...
- Java面试——阻塞队列
一.阻塞队列 [1]首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示:
- 递推求解DAG最长路径长度及最长路径条数
说明 在一般图中,求解最长路或最短路只能通过最短路算法解决 但是在DAG中,由于不存在环,因此可以通过递推,以线性复杂度计算处最长路或最短路.当然需要首先对有向图进行Tarjan缩点转化为DAG 例题 ...
- 全局唯一ID的实现方案
为什么需要保证唯一ID? 在单机服务架构中,数据库的每一个业务表的主键ID都是允许自增的,但是在分布式服务架构的分库分表的设计,使得多个库或者多个表存储了相同的业务表,如果没有一个全局的唯一ID设计方 ...
- 看我如何用定值 Cookie 实现反爬
摘要:本次案例,用定值Cookie实现反爬. 本文分享自华为云社区<我是怎么用一个特殊Cookie,限制住别人的爬虫的>,作者: 梦想橡皮擦 . Cookie 生成 由于本案例需要用到一个 ...
- pyhon之编译成exe
1安装pyinstaller pip install pyinstaller 2 编译 pyinstaller -F -w game.py (-F表示打包单个文件,-w是为了打开exe时候不弹出黑框 ...