核心思路:
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