从springMVC项目中导出数据到Excel表格

 

核心思路:

1.视图:给spring提供excel视图支持

2.数据:查询业务数据

3.载体:poi组件构建表格样式

 

1.给项目增加excel支持,项目中导入poi-*.jar等操作excel文件的jar文件(我使用的是poi3.8版本的)

poi-3.8-20120326.jar

poi-excelant-3.8-20120326.jar

poi-ooxml-3.8-20120326.jar

poi-ooxml-schemas-3.8-20120326.jar

poi-scratchpad-3.8-20120326.jar

 

2.扩展AbstractExcelView抽象类,实现自己的excel类,需要实现buildExcelDocument方法,我实现的类是com.ttpod.stusys.common.excel.ExcelRevenueReportView,主要代码如下:

List<Log> logList = (List<Log>) logList;//从控制器Controller中返回的业务数据

HSSFSheet sheet = workbook.createSheet("tableTitle"); //创建表格

HSSFRow header = sheet.createRow(0);//定义表格的表头

header.createCell(0).setCellValue(cellTitle);//创建表头列

HSSFRow row = sheet.createRow(rowNum);  //创建表格行

row.createCell(0).setCellValue(从logList中解析的数据); //创建单元格并且给其赋值

 

3.在spring-servlet.xml中配置excel视图,代码片段如下:

No1.

<!-- 对模型视图名称的解析,在模型视图名称添加前后缀 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"       

p:prefix="/" p:suffix=".jsp">

    <!-- 此配置优先级要最高 -->

<property name="order" value="1" />

</bean>

No2.

<!-- 从一个独立的xml配置文件中引用excel视图展示类(当然也可以直接在spring-servlet.xml文件中定义excel视图展示类) -->

<bean class="org.springframework.web.servlet.view.XmlViewResolver">

<property name="location">

<!-- 此视图在src目录下 -->

   <value>classpath:spring-excel-views.xml</value>

</property>

<property name="order" value="10" />

</bean>

No3.

<!-- 定义excel视图展示类(引用上面第二步骤实现的excel类) -->

<bean id="view_excel"

   class="com.ttpod.stusys.common.excel.ExcelRevenueReportView">

</bean>

No.4

也可以不创建spring-excel-views.xml文件,直接在spring-servlet.xml文件中定义如下内容:

<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="10"/>

<bean id="view_excel"

   class="com.ttpod.stusys.common.excel.ExcelRevenueReportView">

</bean>

 

4.在控制器Controller中返回excel格式的视图,代码片段如下:

@Controller

@RequestMapping("/view/")

public class ExportController{

/**

*  展示excel视图的方法

/

@RequestMapping("/excel")

protected ModelAndView excel(...){

String filename = new String("中文文件名称".getBytes(),"iso8859-1");

response.setHeader("Content-Disposition","attachment;filename="+filename+".xls");

List<Log> logList = 调用业务层查询日志数据

//view_excel是在spring配置文件里配置的ExcelRevenueReportView,第二个和第三个参数采用键值对方法提供给buildExcelDocument方法使用

return new ModelAndView("view_excel","logList",logList);

}

}

 

5.打开浏览器访问,会以下载文件的方式下载excel数据

http://127.0.0.1:8080/项目部署名称/view/excel.do

你可能感兴趣的:(spring,poi,Excel,excel下载,Spring视图)