平常项目中经常会需要导出excel
如果需要导出的列很多的话,可能要花费很长的时间
本文章通过jxl和poi实现根据数据库表字段及其注释动态生成excel模板,并导出表数据导excel
其实也可以只用jxl,具体可以根据本文稍作修改
【maven依赖】
首先通过sql查询出表的字段和注释,之后使用poi(也可以使用jxl)根据字段和注释创建excel,注释作为列标题,字段名可作为参数,用于最后导出数据
查询结果
【controller】根据之前的sql查询出来一个map,然后通过POIUtil.createTemp()方法生成excel模板文件(方法在后面有)
然后将表数据查出来,本文中的方法gastrointestinalStromalService.selectList(params)根据id集合查询所需要导出的数据,这个替换成自己的查询语句就行,比如select * from tablename。
之后将查询出来的数据放入map中,并传入jxl的 transformer.transformXLS();方法。
部分循环使用JDK8的新特性, AtomicInteger用于计数,线程安全,在foreach循环中不能使用a++进行计数
将comment字放到excel第一行中,并过滤掉没注释的字段
"<jx:forEach items = \"${vms}\" var=\"data\">"是excel模板的表达式,放到第二行,意思是遍历我们传入的vms参数,后面可以使用data.的方式获取数据
将字段名拼接成表达式 "${data."+stringObjectMap.get("Field")+"}"。放到第三行
最后对循环进行闭合"</jx:forEach>"。放最后一行
生成出来的excel模板
之后按照controller中的方法将数据传入生成出来的excel模板,即可导出表数据
导出效果图
转载请注明出处
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通