导入导出封装工具类(二) jXLS Excel报表生成工具类
来源:互联网 发布:知乎 韩信 刘邦男宠 编辑:程序博客网 时间:2024/06/18 01:55
这个工具类简单易学,相比JXL、POI实现导入导出容易实现而且效果也很好,无论是使用JXL还是POI封装导出都需要些很多的代码、代码量很大,如果想要添加复杂样式和效果会更复杂一些。
这是它的官网地址;http://sourceforge.net/projects/jxls/ 可以去官网下载
当然各有各的好处这个类虽然可以很好的实现导出到excel,它的使用侧重于导出数据、类似于报表的数据、美观实用的excel表格,看下面这样的导出效果用它实现会很方便,而用POI会稍微费费事。
上面的效果如果用POI封装实现会比较麻烦,我们以上面的图为例说一下,怎么使用这个工具类生成类似于上面的excel表格。
SQL语句EXCEL模板
将SQL语句写在EXCEL模板里面生成新的excel会从模板生成,以下是我用写好的一个模板,根据这个模板导出一个excel,说一下这个过程:
1. 写一个SQL模板
2. 获取模板的绝对路径
3. 根据绝对路径得到输入流
a) 一般有了输入流,输出到哪里都可以,这也是为什么新需要获取到输入流因为要把文件输出到界面,也就是点击导出EXCEL时可以弹出一个下载框。
4.将类注入到map中,
5.将根据map、输入流生成导出EXCEL文件
/** * @deprecated 导出方法,传入参数为模板名称,该参数从界面传入,支持SQL语句参数查询 * @author lls */ public void exportJXLS(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response){Map submap = this.filterRequestParameterMap(request);//获取传入的模板名称String xlsTemplateName=(String)submap.get("TemplateName");//获取到导出模板的绝对全路径String xlsTemplateFileNameURI=this.getClass().getClassLoader().getResource("excelTemplate/"+xlsTemplateName+".xls").toString();StringxlsTemplateFileName=xlsTemplateFileNameURI.substring(6,xlsTemplateFileNameURI.length());try {//获取连接对象Connection conn=null;conn=jdbcUtil.getConnection();//将报表实现类注入到submap中 ReportManager rm = new ReportManagerImpl( conn, submap ); submap.put("rm", rm);//获取模板的输入流InputStream is =new BufferedInputStream(new FileInputStream(xlsTemplateFileName));//通过模板输入流以及报表实现类生成一个excel工作簿XLSTransformer transformer = new XLSTransformer();HSSFWorkbook workbook=(HSSFWorkbook)transformer.transformXLS(is, submap);//弹出框保存工作簿saveExcelFile(workbook,xlsTemplateName,response);jdbcUtil.close(conn);}catch (Exception e) {e.printStackTrace();}} /** * @deprecated 弹出框保存工作簿 * @param hssWorkbook 工作簿 * @param xlsTemplateName 下载的工作簿名称 * @param response */ private void saveExcelFile(HSSFWorkbook hssWorkbook ,String xlsTemplateName,HttpServletResponse response) {//设置导出弹出框,以及下载文件名称response.setHeader("Content-Disposition","attachment;filename="+xlsTemplateName+".xls");OutputStream os;try {os = response.getOutputStream();hssWorkbook.write(os);os.flush(); os.close(); } catch (IOException e) {e.printStackTrace();}}
PS:两点需要注意一是获取输入流需要一个文件的地址,比如写好的模板你要知道放到哪里了,这里我是用this.getClass().getClassLoader().getResource这个方法得到它的绝对路径,再根据绝对路径根据new FileInputStream(xlsTemplateFileName)得到输入流。
而是执行SQL语句原理是将ReportManagerImpl类放到了map里面,该类封装了查询提供一个方法exec(string sql)执行语句,可以再表格中写类似于EL表达式的标签写法。
如下面是我写的模板文件
下面是执行效果,
记的在基础系统里面有课表设计,觉得如果课表用这个来设计会会简单很多,相比java专业报表会好实用,可以自己先用excel设计好课表的模板文件,剩下的就是往模板里面添加数据,添加数据也是通过变量来添加,相对于复杂的jasper等报表设计器这个工具使用简单、容易使用,每个工具都有自己的优势与略施,充分利用工具的优势才会真正的得其所用、物有所值。
同样也需要看到别人的优势,让自己的优势保持,弥补不足,互相学习成长。
项目只需要做导出功能,并没有做导入看了看导入原理也一样,上面只是jXLS一小部分功能,使SQL语句如何查询,当然可以接受我们常常使用的数据如list、collection、map等类型数据,可见它的扩展性还可以,支持常用数据类型导入导出操作,在选择实现方式时需要根据具体要求选择合适的工具才是最合适的。
- 导入导出封装工具类(二) jXLS Excel报表生成工具类
- Excel导入导出封装工具类
- poi/jxls导入/导出Excel工具类(支持2003和2007)
- poi/jxls导入/导出Excel工具类(支持2003和2007)
- 开源Excel报表工具:jxls
- POI导出Excel模板工具类(使用jxls)
- 使用工具类 使用poi导入导出excel报表
- Excel导入导出工具类
- excel导入导出工具类
- Excel导入导出工具类
- java简易excel导入导出工具(封装POI)
- java简易excel导入导出工具(封装POI)
- Poi实现Excel导出工具类封装
- Poi实现Excel导出工具类封装
- java导出excel封装成工具类
- excel 导入导出 poi工具类
- 导入导出Excel工具类ExcelUtil
- 导入导出Excel工具类ExcelUtil
- easyDialog v2.0
- 简要分析如何对汽车的起动机进行检修
- centos 安装vm74 + jeffy插件
- 深入理解JavaScript系列 ----(7):SOLID五大原则之开闭原则OCP
- 最长上升子序列(模板)
- 导入导出封装工具类(二) jXLS Excel报表生成工具类
- VC2010中"Include Directories" 和 "Additional Include Directories"的区别
- C++ primer (5th) 随想与学习笔记 8
- Linux下配置java平台环境
- git 入门
- AMQP介绍
- java.util.ConcurrentModificationException详解
- Container With Most Water
- Discuz! x3 找回创始人密码