`
zy77612
  • 浏览: 284028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简单EXCEL报表方案:Spring+POI

    博客分类:
  • J2EE
阅读更多

近期为完成一个简单的报表模块,需求很简单,从数据库中取出数据导出到已写好的Excel模版中。
     一开始准备用jfreeReport实现,偶然调试spring的demo时发现,countries的例子很好,既有web分页,又有excel,pdf的输出,经分析例子,spring封装了poi实现excel导出,itext实现pdf输出。
     1,先来分析一下poi的一些背景。POI的主页:
http://jakarta.apache.org/poi 。POI HSSF是当今市面上最强大的处理EXCEL表格的java工具,比韩国人写的那个JExcelApi或其它几种工具都要好。而且它是Apache的开源项目。当然POI HSSF也有缺点:不能直接支持EXCEL图表,API文档粗糙简略,有些类和方法需要引用Apache项目中的其它一些包,包与包之间依赖关系比较复杂等等。
Apache的Jakata项目的POI子项目,目标是处理ole2对象。目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等。这是一个年轻的项目,所以象HDF这样直接支持Word对象的好东西仍然在设计中。其它支持word格式的纯java方案还有itext,不过也是仍在奋斗中。但是HSSF已经成熟到能够和足够我们使用了。另外,无锡永中Office的实现方案也是纯java的解决方案,不过那也是完全商业的产品,并不是公开代码项目。其实,从开发历史的角度讲,在80年代中期starOffice的原作者在德国成立了StarOffice suite公司,然后到1999年夏天starOffice被sun收购,再到2000年6月starOffice5.2的发布;并且从starOffice6.0开始,starOffice建立在OpenOffice的api的基础上,这个公开代码的office项目已经进行了很长的时间。虽然那是由C++写的,但是POI的代码部分也是由openOffice改过来的。所以,应该对POI充满足够的信心。国内已经有部分公司在他们的办公自动化等Web项目中使用poi了,如日恒的ioffice,海泰的HTOffice等。java当初把核心处理设成Unicode,带来的好处是另代码适应了多语言环境。然而由于老外的英语只有26个字母,有些情况下,一些程序员用8位的byte处理,一不小心就去掉了CJK的高位。或者是由于习惯在程序中采用硬编码,还有多种原因,使得许多java应用在CJK的处理上很烦恼。还好在POI HSSF中考虑到这个问题,可以设置encoding为双字节。编译好的jar主要有这样4个:poi包,poi Browser包,poi hdf包,poi hssf例程包。实际运行时,需要有poi包就可以了。如果用Jakarta ant编译和运行,下载apache Jakarta POI的release中的src包,它里面已经为你生成好了build文件了。只要运行ant就可以了(ant 的安装和使用在此不说了)。如果是用Jbuilder 运行,请在新建的项目中加入poi包。以Jbuilder6为例,选择Tools菜单项的config libraries...选项,新建一个lib。在弹出的菜单中选择poi包,如这个jakarta-poi-1.5.1-final-20020820.jar,把poi添加到jbuilder中。然后,右键点击你的项目,在project的properties菜单中path的required Libraries中,点add,添加刚才加入到jbuilder中的poi到你现在的项目中。如果你仅仅是为了熟悉POI hssf的使用,可以直接看POI的samples包中的源代码,并且运行它。hssf的各种对象都有例程的介绍。hssf提供的例程在org.apache.poi.hssf.usermodel.examples包中,共有14个,生成的目标xls都是workbook.xls。如果你想看更多的例程,可以参考hssf的Junit test cases,在poi的包的源代码中有。hssf都有测试代码。
     2 ,poi提供了一个不错的tutor,教初学者如何快速上手使用POI HSSF:http
://jakarta.apache.org/poi/hssf/quick- guide.html
 建一个poiDemo的工程,然后把tutor首页的例子运行一遍,入门级别就够了。其中包括:新建excel文件(WorkBook);新建sheet;开辟cell;设置cell数据类型和格式;设置输出的样式如对齐方式,颜色,字体,边框等;合并单元格;读取已有excel文件;设置打印区域;设置页码和页脚;调用公式;选中sheet;屏幕缩放;绘图;插入图像等等。
   3, spring的对poi的封装。在spring-framework-1.2-rc2\src\org\springframework\web\servlet\view\document下有两个类AbstractExcelView.java和AbstractPdfView.java,其中前者是处理excel的抽象类,继承它的时候,需要实现抽象方法<!--StartFragment -->buildExcelDocument,实例代码如下:

 1   protected   void  buildExcelDocument(
 2
     Map model, HSSFWorkbook workbook,
 3      HttpServletRequest request, HttpServletResponse response) 
{
 4

 5     //
 Go to the first sheet.
 6     //
 getSheetAt: only if workbook is created from an existing document
 7           //  HSSFSheet sheet = workbook.getSheetAt(0);

 8          HSSFSheet sheet  =  workbook.createSheet( " Spring " );
 9          sheet.setDefaultColumnWidth( 12
);
10

11     //  Write a text at A1.

12    HSSFCell cell  =  getCell(sheet,  0 0 );
13    setText(cell,  " Spring POI test "
);
14

15     //  Write the current date at A2.

16    HSSFCellStyle dateStyle  =  workbook.createCellStyle();
17    dateStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat( " m/d/yy "
));
18    cell  =  getCell(sheet,  1 0
);
19    cell.setCellValue( new
 Date());
20
   cell.setCellStyle(dateStyle);
21

22     //  Write a number at A3

23    getCell(sheet,  2 0 ).setCellValue( 458 );
24

25     //  Write a range of numbers.

26    HSSFRow sheetRow  =  sheet.createRow( 3 );
27     for  ( short  i  =   0 ; i  <   10 ; i ++
{
28      sheetRow.createCell(i).setCellValue(i  *   10
);
29    }

30  }

4, 通过web程序调用,很多情况需要把生成的excel文件通过网络连接来输出,这些spring已经替你做好了,所以只要按照spring的调用标准就可以,我使用的是spring的mvc,实例代码如下:

1 protected  ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response)  throws  Exception  {
2         List list  =  (List) request.getSession().getAttribute( " list " );  // 从session中取数据list

3         Map model = new  HashMap(); 
4         model.put( " list " ,list);  // 将list封装传到excelView中

5         ExcelView ev  =   this .getExcelView(); // ExcelView继承了AbatractExcelView
6           return   new  ModelAndView(ev,model);  // 跳转页面
7     }

ok,整个简单的过程就完成了,你可以根据自己的需求灵活的在各个环节coding!漂亮的报表会让你兴奋不已!

 

分享到:
评论

相关推荐

    Spring+Mybatis+Druid+POI示例整合demo

    通过这样的整合,开发者可以利用Spring的IoC和AOP特性,Mybatis的简单数据库操作,Druid的高效连接池,以及POI对Excel文件的操作,构建一个完整的业务系统,尤其适用于数据处理和分析的场景。 总的来说,这个Demo是...

    springboot+mybatis+poi 实现excel导入导出

    在IT行业中,SpringBoot、MyBatis和Apache POI是三种非常重要的技术,它们分别用于构建微服务应用、数据库操作和处理Excel数据。本篇文章将详细介绍如何利用SpringBoot和MyBatis结合Apache POI实现Excel的导入导出...

    spring + springMVC + mybatis + poi

    在本项目中,POI主要用于处理Excel数据,如读取Excel报表,或将程序生成的数据导出到Excel文件,适用于数据分析、报表生成等场景。 这个项目结合了以上技术,提供了一个完整的Java后端开发模板,可以帮助开发者快速...

    Spring MVC+Spring+Mybatis+poi+xml全部jar包

    结合这三个框架和POI库,开发者可以构建一个完整的后端系统,处理HTTP请求,通过Spring MVC进行业务逻辑控制,利用Spring管理依赖,通过Mybatis执行数据库操作,同时使用POI处理Excel数据,如报表生成或数据导入导出...

    Springboot+Poi实现Excel的导入导出

    本项目结合了Spring Boot和POI,实现了Excel文件的导入与导出功能,这在数据管理、报表生成、数据分析等领域十分常见。 首先,我们要理解Spring Boot如何与MyBatis集成来处理数据库操作。MyBatis是一个轻量级的持久...

    spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库.zip

    在本项目中,"spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库",开发者利用了Spring Boot、MyBatis Plus和EasyPoi库来实现了一个功能强大的数据交互系统,允许用户将数据库中的数据...

    Springboot+mybatis+poi输出报表

    本项目“Springboot+mybatis+poi输出报表”正是这样一个系统,它利用流行的Java技术栈来实现从数据库提取数据并生成Excel报表供用户下载的功能。下面我们将详细讨论这个项目涉及到的关键知识点。 1. **Spring Boot*...

    ssm+poi+shiro+echarts.zip

    在本项目中,POI可能被用来读取或生成Excel报表,方便数据导入导出或者数据分析。 5. **Apache Shiro**:Shiro 是一个强大的安全框架,用于身份认证、授权、会话管理和加密。在项目中,Shiro可以提供用户登录、权限...

    SpringMVC+jdbc+poi+download

    在IT行业中,SpringMVC、jdbc、poi以及download都是关键的技术点,它们分别涉及Web应用开发、数据库操作、Excel处理和文件下载。接下来,我们将详细探讨这些知识点。 首先,SpringMVC是Spring框架的一部分,是一个...

    struts2+spring+hibernate+生成报表

    至于生成Excel报表,Java中有多种库可以实现这一功能,例如Apache POI。Apache POI是一个开源项目,用于读写Microsoft Office格式的文件,包括Excel。我们可以使用POI来创建工作簿、工作表,设置单元格样式、公式等...

    MyPOI.rar(excel导入导出功能(根据poi实现)基于spring+springMVC+mybatis实现)

    本项目“MyPOI.rar”提供了一种基于Java技术栈,特别是Apache POI库,来实现Excel导入导出功能的解决方案。这个项目结合了Spring、SpringMVC和MyBatis框架,构建了一个完整的Web应用。 Apache POI是Apache软件基金...

    ssm +poi + json 整合jar包

    SSM(Spring、SpringMVC、MyBatis)是一个广泛使用的Java Web开发框架组合,而Apache POI是一个用于处理Microsoft Office格式文件的库,如Excel。阿里巴巴的JSON库(fastjson或alibaba json-lib)则提供了高效、易用...

    struts1.2+spring+hibernate 简单的实现

    这个项目"struts1.2+spring+hibernate 简单的实现"旨在展示如何整合这三个框架,实现单表和多表的维护,并且包含了一个简单的Excel报表生成功能。 首先,Struts1.2是MVC(模型-视图-控制器)架构模式的一种实现,它...

    springmvc+POI的Excel文件导入导出

    Spring MVC作为Java Web开发中的主流框架,与Apache POI库结合,可以方便地处理Excel文件的导入导出。Apache POI是Java API,专门用于读写Microsoft Office格式的文件,包括Excel。 首先,我们来看一下如何利用...

    SpringMVC+Hibernate+POI导入导出excel

    本项目结合了这三个技术,实现了Excel文件的导入与导出功能,这在企业级应用中是非常常见的需求,例如报表管理、数据交换等场景。 SpringMVC是Spring框架的一个模块,它主要用于构建Web应用程序的Model-View-...

    SpringMVC POI Excel 生成导出

    "SpringMVC POI Excel 生成导出" SpringMVC 是一个基于 Java 的 Web 框架,POI 是一个 Java 库,用于操作 Microsoft Office 文件格式,Excel 是一个电子表格软件。今天,我们将在 SpringMVC 中使用 POI 生成 Excel ...

    springmvc+meavn+poi获取

    标题中的"springmvc+meavn+poi获取"指的是一个基于SpringMVC、MyBatis、Apache POI的项目,主要用于处理Excel数据的读取和操作。这个项目可能是一个Web应用,整合了三个主流的Java技术栈,用于实现企业级的数据处理...

    Spring3MVC and POI

    在实际开发中,Spring 3 MVC与Apache POI的结合非常常见,特别是在需要处理大量数据并导出为Excel报表的场景下。例如,你可以创建一个Controller,通过注解路由处理请求,查询数据库获取数据,然后使用POI将数据写入...

    struts2+hibernate+spring+jfreechart+导出excel+导出pdf完美整合.zip

    在Java中,可以使用Apache POI库来操作Excel文件,iText库来生成PDF文件。 导出Excel功能通常涉及到读取数据源,如数据库或文件,然后将数据填充到Excel工作表中。而导出PDF则需要将HTML、文本或图像转换成PDF格式...

Global site tag (gtag.js) - Google Analytics