J-Excel万能Excel导入导出工具
J-Excel 是万能的 Excel 导入导出工具:
支持从List<Map>中导出
支持从List<POJO>中导入导出
支持从List<POJO里面还有List<POJO>>中导入导出
支持导出类似课程表结构类型纵表
支持国际化
不写一个配置文件!
示例请参照:
public class TestExcel { static { SimpleConfigurator.addConfigurator(new DbConfig("jdbc:mysql://localhost/digitalcampus?createDatabaseIfNotExist=true&useUnicode=true&characterEncoding=utf-8&autoReconnect=true", DbConfig.DEFAULT_CONFIG_NAME)); } /** * 从List<Map>中导出 * @param workbook * @throws Exception */ public static void testSimpleMapExport(Workbook workbook) throws Exception { Hyberbin hyberbin = new Hyberbin(); List<Map> list = hyberbin.getMapList("select * from dc_xxkc"); Sheet sheet = workbook.createSheet("testSimpleMapExport"); List<String> cols = new ArrayList<String>(); List<FieldColumn> fieldColumns = hyberbin.getFieldColumns(); for (FieldColumn column : fieldColumns) { cols.add(column.getColumn()); } SimpleExportService service = new SimpleExportService(sheet, list, (String[]) cols.toArray(new String[]{}), "学校课程"); service.setDic("KCLX", "KCLX").addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 service.doExport(); } /** * 从List<Vo>中导出 * @param workbook * @throws Exception */ public static void testSimpleVoExport(Workbook workbook) throws Exception { Hyberbin<SchoolCourse> hyberbin = new Hyberbin(new SchoolCourse()); List<SchoolCourse> list = hyberbin.showAll(); Sheet sheet = workbook.createSheet("testSimpleVoExport"); //ExportExcelService service = new ExportExcelService(list, sheet, "学校课程"); ExportExcelService service = new ExportExcelService(list, sheet, new String[]{"id", "courseName", "type"}, "学校课程"); service.addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 service.doExport(); } /** * 从List<Vo>,vo中还有简单循环节中导出 * @param workbook * @throws Exception */ public static void testVoHasListExport(Workbook workbook) throws Exception { Hyberbin<SchoolCourse> hyberbin = new Hyberbin(new SchoolCourse()); List<SchoolCourse> list = hyberbin.showAll(); List<String> strings = new ArrayList<String>(); for (int i = 0; i < 10; i++) { strings.add("我是第" + i + "个循环字段"); } for (SchoolCourse course : list) { course.setBaseArray(strings); } Sheet sheet = workbook.createSheet("testVoHasListExport"); ExportExcelService service = new ExportExcelService(list, sheet, new String[]{"id", "courseName", "type", "baseArray"}, "学校课程"); service.addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 service.setGroupConfig("baseArray", new GroupConfig(10) { @Override public String getLangName(int innerIndex, int index) { return "我是第" + index + "个循环字段"; } }); service.doExport(); service.exportTemplate();//生成下拉框 } /** * 从List<Vo>,vo中还有复杂循环节中导出 * @param workbook * @throws Exception */ public static void testVoHasListVoExport(Workbook workbook) throws Exception { Hyberbin<SchoolCourse> hyberbin = new Hyberbin(new SchoolCourse()); List<SchoolCourse> list = hyberbin.showAll(); for (SchoolCourse course : list) { List<InnerVo> innerVos = new ArrayList<InnerVo>(); for (int i = 0; i < 10; i++) { innerVos.add(new InnerVo("key1", "value1")); } course.setInnerVoArray(innerVos); } Sheet sheet = workbook.createSheet("testVoHasListVoExport"); ExportExcelService service = new ExportExcelService(list, sheet, new String[]{"id", "courseName", "type", "innerVoArray"}, "学校课程"); service.addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 for (int i = 0; i < 10; i++) { service.addTook("hiddenvalue", "key", i, "something"); } service.setGroupConfig("innerVoArray", new GroupConfig(2, 10) { @Override public String getLangName(int innerIndex, int index) { return "我是第" + index + "个循环字段,第" + innerIndex + "个属性"; } }); service.doExport(); } /** * 导出一个纵表(课程表之类的) * @param workbook * @throws Exception */ public static void testTableExport(Workbook workbook) throws Exception { Sheet sheet = workbook.createSheet("testTableExport"); TableBean tableBean = new TableBean(3, 3); Collection<CellBean> cellBeans = new HashSet<CellBean>(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { CellBean cellBean = new CellBean(i * 3 + j + "", i, j); cellBeans.add(cellBean); } } tableBean.setCellBeans(cellBeans); ExportTableService tableService = new ExportTableService(sheet, tableBean); tableService.doExport(); } /** * 从List<Vo>中入 * @param workbook * @throws Exception */ public static void testSimpleVoImport(Workbook workbook) throws Exception { Sheet sheet = workbook.getSheet("testSimpleVoExport"); ImportExcelService service = new ImportExcelService(SchoolCourse.class, sheet); service.addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 List list = service.doImport(); System.out.println("成功导入:" + list.size() + "条数据"); } /** * 从List<Vo>,vo中还有简单循环节中导入 * @param workbook * @throws Exception */ public static void testVoHasListImport(Workbook workbook) throws Exception { Sheet sheet = workbook.getSheet("testVoHasListExport"); ImportExcelService service = new ImportExcelService(SchoolCourse.class, sheet); service.addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 List list = service.doImport(); System.out.println("成功导入:" + list.size() + "条数据"); } /** * 从List<Vo>,vo中还有复杂循环节中导入 * @param workbook * @throws Exception */ public static void testVoHasListVoImport(Workbook workbook) throws Exception { Sheet sheet = workbook.getSheet("testVoHasListVoExport"); ImportExcelService service = new ImportExcelService(SchoolCourse.class, sheet); service.addDic("KCLX", "1", "国家课程").addDic("KCLX", "2", "学校课程");//设置数据字典 List list = service.doImport(); System.out.println("成功导入:" + list.size() + "条数据"); } public static void main(String[] args) throws Exception { Workbook workbook = new HSSFWorkbook(); testSimpleMapExport(workbook); testSimpleVoExport(workbook); testVoHasListExport(workbook); testVoHasListVoExport(workbook); testTableExport(workbook); testSimpleVoImport(workbook); testVoHasListImport(workbook); testVoHasListVoImport(workbook); workbook.write(new FileOutputStream("D:\\excel.xls")); } }
评论
多人同时导出 Excel 干崩服务器!新来的阿里大佬给出的解决方案太优雅了!
点击关注公众号,Java 干货及时推送↓推荐阅读:面试辅导,我们出大成果了!来源:juejin.cn/post/7259249904777838629前言 业务诉求:考虑到数据库数据日渐增多,导出会有全量数据的导出,多人同时导出可以会对服务性能造成影响,导出涉及到mysql查询的io操作,
Java技术栈
1
【第129期】程序员的新宠:三款终端工具,让你告别Xshell!
概述 WindTerm:跨平台的SSH利器 首先介绍的是WindTerm,这是一款使用C语言开发的跨平台SSH客户端。它不仅完全免费,而且没有商业使用的限制。WindTerm支持SSH v2、Telnet、Raw Tcp等协议,而且性能出色,甚至超过了FinalShell和Electerm。功能
前端微服务
0
AI论文写作工具和生成器(一)
随着人工智能和大模型的迅猛发展,AI对研究人员和学生提供了极大的写作便利。本文将介绍市面上常用的AI论文写作工具,帮助你提高论文写作效率并遵循学术道德。请仅将AI论文生成器视为辅助参考手段,切勿直接挪用全文。XPaper AlXPaper AI是由点击式创作工具晓语台推出的一款论文写作生成平台,只需
IQ前端
0
python读取多个excel表多个sheet后映射匹配再分组计算、纵向拼接
大家好,我是飞奔的蜗牛ing。一、前言前几天在一个客户给到一单数据处理的 问题,需求是这样的:1.表“aa2020”中2020年数据需要按季度分成四个表。(1-3月、4-6月、7-9月、10-12月)2.表“2020年一季度”代表2020年一季度客户所对应的管理档位,需要把表中的档位导入附表“aa2
IT共享之家
0
分享几个前端中好玩且有用的开源工具,总有一个适合你!
点击上方 前端Q,关注公众号回复加群,加入前端Q技术交流群正所谓差生文具多,作为前端的我们,拥有几个合适的工具和网站可以很有效的提高我们的工具效率,还会有一些很有趣的网站可以在我们敲 bug 累了的时候供我们娱乐,接下来我就和大嘎分析一下我在用的一些工具和网站。聚合API该网站提供了大量的
前端Q
0
4款最新可用的老牌 KMS 工具,亲测完美激活!
对于没有激活的Windows、Office系列产品的电脑,确实有点难用!例如没有激活的Windows电脑,大大的图标水印提示需要激活!例如没有激活的Office产品,根本没有办法编辑。为了解决激活Windows、激活office、还有Windows家庭版升级专业版。这里给大家推荐4款亲测有效的KMS
dotNET全栈开发
10
.NET 开源工具库,集成超过1000个扩展方法
前言推荐一个.NET 开源项目,集成了超过1000个扩展方法。项目简介Z.ExtensionMethods是由zzzprojects公司开发并维护的一款开源库,为.NET开发人员提供一系列实用的扩展方法,可以减少重复劳动、提高开发效率,支持.NET Framework 和 .NET Core。该项目
dotNET全栈开发
10
Excel 黑科技:轻松优化工作薄性能
随着时间的推移,大型工作表可能会收集不必要的格式和元数据,从而降低性能。当数据被删除但基础格式未被删除时,可能会发生这种情况。Excel 现在可以自动检测性能问题并提出解决方法。您还可以随时手动运行检查性能命令来识别和解决性能问题。当我们打开工作簿时,Excel 会自动检查具有不必要格式的单元格。如
PowerBI战友联盟
6