推荐一个java万能的Excel导入导出工具

hybswan890720 2014-10-18 08:48:00
基于poi的万能的Excel导入导出工具.
支持从List<Map>中导出.
支持从List<POJO>中导入导出.
支持从List<POJO里面还有List<POJO>>中导入导出.
支持导出类似课程表结构类型纵表.
支持国际化.
支持数据字典.
支持单元格中下拉框数据校验.
支持自动标红错误的数据.
支持模板校验,用hash值相加校验模板中的数据是否被改动过.
支持自由交换表格中的行或者列.
不写一个配置文件.
用到了适配器模式,支持任意类型的数据导入导出,用户还可以自己编写适配器操作自定义的数据类型!
示例请参照:https://github.com/hyberbin/J-Excel
下载包:http://download.csdn.net/detail/hybswan890720/8053805

相关工具推荐:https://github.com/hyberbin/J-hyberbin
...全文
566 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
日知己所无 2014-10-19
  • 打赏
  • 举报
回复
赞一下 CSDN为什么不提供回帖的人给发帖的人评分的功能呢…… 貌似现在发帖只能往外发分,却不能往回收分
hybswan890720 2014-10-19
  • 打赏
  • 举报
回复
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")); }
hybswan890720 2014-10-19
  • 打赏
  • 举报
回复
示例请参照:https://github.com/hyberbin/J-Excel
Magical茏 2014-10-18
  • 打赏
  • 举报
回复
赞一个楼主既然推荐 能不能有点demo
系统包含项目的源码和搭建的详细文档,以及数据库脚本 系统功能模块(开发时可取舍) 1. 权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限。 按钮权限: 给角色分配按钮权限。 2. 按钮管理:自定义按钮管理,维护按钮权限标识等 3. 菜单管理:无限级别自定义菜单,自定义菜单图标,业务菜单和系统菜单分离,菜单状态显示隐藏(递归处理) 4. 数据字典:无限级别,支持多级别无限分类。内设编号,排序等 5. 组织机构:无限级别,公司or部门管理 6. 在线管理:websocket技术,实时检测在线用户列表,统计在线人数,可强制用户下线 同一用户只能在一个客户端登录 7. 系统用户:对各个基本的用户增删改查,单发、群发站内信邮件短信,导入导出excel表格,批量删除 8. 会员管理:对前台用户管理,分配会员级别,到期时间,状态,联系信息等资料 9. 代码生成:生成完整的模块代码,并保留生成记录模版,可复用 (超强悍开发利器) 正向生成: 生成完整的模块,页面、处理类、service层、myabaits的xml 建表的sql脚本等 反向生成: 任意连接其它数据库(mysql、oracle、sqlserver),根据表反射生成本系统的模块 10. 性能监控:监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等 11. 接口测试:POST or GET 方式检测系统接口,参数加密,json返回结果,计算服务器响应时间 12. 发送邮件:单发,群发邮件 13. 置二维码:生成二维码图表保存到服务器 or 解析读取二维码内信息 14. 图表报表:柱状图、饼状图、折线图、各种图表大全 15. 地图工具:打开地图, 鼠标点击地图某位置获取经纬度坐标,根据经纬度计算两点距离 16. 打印测试:页面打印预览测试 17. 图片管理:对批量上传的图片统一管理 ,点击放大,可打开多个,自由切换,绚丽预览效果 18. 图片爬虫:输入某网址,爬出其图片显示在页面上,可以放大预览。可保存到服务器上,到图片管理里面 19. 站内信:收信箱和发信箱, websocket技术通讯技术做的及时收信提醒,可配置语音提示来信 20. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置,微信配置 21. 及时聊天:打开聊天窗口,可群聊、一对一聊天 22. 表单构建:拖拽式快速自定义构建表单,组建元素丰富,有富文本、上传控件、下拉框等等 23. 主附结构:提供一个主表和明细表模块的例子(用本代码生成器生成的) 24. 员工管理:和组织机构部门管理,可以绑定登录系统用户,授权数据权限 -------------------------------------------------------------------------------------------------------------------------数据库管理 25. 数据库备份:可备份单表、整库,支持本地和远程数据库备份(java界面编程技术,socket编程技术) 26. 备份定时器:quartz 2.2 强大的任务调度,多线程备份数据库,任务启动关闭异步操作 27. 数据库还原:历史备份记录,还原数据库 or 单表 ,统计备份时间和文件大小 28. SQL编辑器:强大的SQL编辑器,支持编辑语句复杂查询语句,生成动态报表,可导出excel ------------------------------------------------------------------------------------------------------------------------- 菜单权限:分配给每个角色不同的菜单权限, 每个角色看到的菜单不同,无限级别菜单 按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单,自定义按钮管理 支持多用户分权限管理后台, 权限具体到不同的菜单不同的按钮

50,549

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧