Spring不仅支持jsp,velocity,freemarker,同时可以将数据生成到Excel,PDF等非html文档
首先,我们编写控制器,返回逻辑名“ListStudentUseExcel”
package Action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;
public class TestExcelController extends AbstractCommandController ...{
protected ModelAndView handle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, BindException arg3) throws Exception ...{
return null;
}
protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception ...{
return new ModelAndView("ListStudentUseExcel","","");
}
}
配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
<beans>
<bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/excel.mvc">TestExcelController</prop>
</props>
</property>
</bean>
<bean id="ListStudentUseExcel" class="Action.ListStudentUseExcel"></bean>
<bean id="beanNameViewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean id="TestExcelController" class="Action.TestExcelController"/>
</beans>
由于上述配置文件采用了beanNameViewResolver的当时,所以,我们要编写一个合controller返回逻辑名相同的
ViewClass---ListStudentUseExcel,代码如下:
package Action;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Student;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;
public class ListStudentUseExcel extends AbstractExcelView ...{
protected void buildExcelDocument(Map model,
HSSFWorkbook workbook,
HttpServletRequest request,
HttpServletResponse response)throws Exception...{
//设置response方式,使执行此controller时候自动出现下载页面,而非直接使用excel打开
response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition",
"attachment; filename="" + "excel.xls" + """);
//构造数据
Student stu1=new Student("gaoxiang1","male1","20060101",1);
Student stu2=new Student("gaoxiang2","male2","20060102",2);
Student stu3=new Student("gaoxiang3","male3","20060103",3);
Student stu4=new Student("gaoxiang4","male4","20060104",4);
Student stu5=new Student("gaoxiang5","male5","20060105",5);
ArrayList stuList=new ArrayList();
stuList.add(stu1);
stuList.add(stu2);
stuList.add(stu3);
stuList.add(stu4);
stuList.add(stu5);
//产生Excel表头
HSSFSheet sheet=workbook.createSheet("studentList");
HSSFRow header=sheet.createRow(0); //第0行
//产生标题列
header.createCell((short)0).setCellValue("name");
header.createCell((short)1).setCellValue("sex");
header.createCell((short)2).setCellValue("date");
header.createCell((short)3).setCellValue("count");
HSSFCellStyle cellStyle=workbook.createCellStyle();
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("mm/dd/yyyy"));
//填充数据
int rowNum=1;
for (Iterator iter = stuList.iterator(); iter.hasNext();) ...{
Student element = (Student) iter.next();
HSSFRow row=sheet.createRow(rowNum++);
row.createCell((short)0).setCellValue(element.getName().toString());
row.createCell((short)1).setCellValue(element.getSex().toString());
row.createCell((short)2).setCellValue(element.getDate().toString());
row.getCell((short)2).setCellStyle(cellStyle);
row.createCell((short)3).setCellValue(element.getCount());
}
//列总和计算
HSSFRow row=sheet.createRow(rowNum);
row.createCell((short)0).setCellValue("TOTAL:");
String formual="SUM(D2:D"+rowNum+")"; //D2到D[rowNum]单元格起(count数据)
row.createCell((short)3).setCellFormula(formual);
}
}
测试页面:/exlce/ListStudentUseExcel.jsp
<%...@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<input type="button" onclick="javascript:window.location.href='<%=request.getContextPath() %>/excel.mvc'" value="download excel"></input>
</body>
</html>
运行ListStudentUseExcel.jsp,点击下载按钮,程序运行结果及生成的excel如下:
分享到:
相关推荐
这个例子展示了如何使用 Spring MVC 和相关的库(Apache POI 和 iText)来动态生成 Excel 和 PDF 文件,提供给用户下载。整个流程涉及到 Spring MVC 的配置、控制器的编写以及与第三方库的集成,实现了从数据到视图...
这个类的作用是处理并生成Excel文件。在接收到Controller(比如“ScoreManageController.java”)的处理结果后,ExcelView4Common会根据数据生成对应的Excel内容,并将其响应给客户端。 “ScoreManageController....
在Spring MVC项目中,我们可以使用Apache POI API来创建Excel工作簿、工作表,并填充数据,最后将生成的文件以HTTP响应的方式发送给客户端下载。 以下是一些关键步骤: 1. **引入依赖**:首先,在项目中添加Apache...
这个方法接收请求,准备数据,然后使用Jett来生成Excel文件。以下是一个简单的示例: ```java @GetMapping("/exportExcel") public void exportExcel(HttpServletResponse response) throws IOException { // 准备...
5. 使用Jxls的API处理模板,填充数据,生成Excel工作簿。 6. 将生成的Excel文件通过HTTP响应返回给客户端。 掌握这些步骤和技巧,开发者就能有效地在Spring MVC应用中实现Excel导出功能,满足用户的数据导出需求。
`jxl.jar` 提供了读写Excel文件的能力,如果你的应用需要生成或读取Excel报告,这个库会非常有用。 `commons-collections-3.1.jar` 是Apache Commons Collections库,提供了丰富的集合操作和算法,增强了Java集合...
这通常涉及使用Apache POI库或者其他类似的Java库,这些库允许程序操作Microsoft Excel文档,包括创建工作表、填充数据、格式化单元格等。 3. **Spring Data JPA**:Spring Data JPA是Spring框架的一部分,它为Java...
在Spring MVC的后端,开发者可以利用POI库来生成Excel文件,这包括设置工作簿、工作表、行和单元格的数据。例如,从数据库查询到的数据可以被转换为Excel格式,然后通过HTTP响应返回给前端。 在EasyUI的前端,可以...
标题 "Spring3MVC and POI" 涉及到两个关键...这个示例展示了如何在Spring 3 MVC的Controller中利用POI生成Excel报表,然后通过HTTP响应发送给客户端下载。这样的功能在数据分析、报表生成和数据导出等场景下非常实用。
Excel工具类 Word工具类 Java NIO实现socket工具类 分布式session jdk升级到1.7 嵌入式redis服务(只支持linux) 1.0.13 修改默认的beanName生成策略,controller参数扩展 1.0.14 分布式session使用zookeeper 1.0.15 ...
在这个"页面表格数据生成excel文件下载"的例子中,我们可以看到两个关键的Java文件:DownController.java和ExcelUtil.java。下面我们将详细探讨这两个文件可能实现的功能和涉及的技术。 首先,`DownController.java...
结合这三个框架和POI库,开发者可以构建一个完整的后端系统,处理HTTP请求,通过Spring MVC进行业务逻辑控制,利用Spring管理依赖,通过Mybatis执行数据库操作,同时使用POI处理Excel数据,如报表生成或数据导入导出...
在IT领域,Spring MVC作为Spring框架的一部分,是用于构建Web应用程序的强大工具,而JasperReport则是一款功能丰富的报表生成库,支持多种格式,如PDF、HTML、Excel等。本示例将探讨如何在Spring3 MVC项目中集成...
**Jxls:基于模板生成Excel文件的神器** 在IT行业中,数据处理和报告生成是常见的需求,特别是当需要将大量数据导出为易于查看和分析的格式时,Excel表格成为了首选。而`jxls`正是一个Java库,它提供了一种高效、...
"SpringMVC POI Excel 生成导出" 这个标题指的是使用 SpringMVC 框架和 POI 库生成 Excel 文件,并将其导出。这个标题包含了三个关键词:SpringMVC、POI 和 Excel,它们是我们今天要探讨的主题。 描述解释 在这个...
导出 导入 excel 文件 2 导出word文件 3. IO 流上传下载文件 4. 群发邮件,可以发html、纯文本格式,可以发给任意邮箱(实现批量发送广告邮件) 5. 群发or单独 发送短信,支持两种第三方短信商接口 6. spring aop ...
在Spring MVC框架中,生成Excel和PDF文件是常见的需求,特别是在数据导出、报表生成或者文档分享场景下。本文将详细讲解如何利用Spring MVC结合开源库实现Excel和PDF的生成。 首先,我们要引入两个关键的库:Apache...
在这个类中,你需要重写`buildExcelDocument`方法,该方法负责生成Excel文档内容。 4. **设置模型数据** 在控制器方法中,你需要构建好要导出的数据模型,然后将模型放入ModelAndView对象中,设置视图名为自定义...
在Spring MVC Web应用程序中集成Jasper报表工具是一个常见的需求,以提供动态生成和展示各种复杂数据的报表。JasperReports是一款强大的开源报表库,能够帮助开发者创建、设计和展示多种格式的报表,如PDF、HTML、...