需求:客户端传来两个参数,当前页码和每页的条数,根据传来的参数实现对数据的导出

1.导入依赖

           <!-- 报表相关 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version>
</dependency>

2.定义controller类

/*
* 同步(跳转到excel视图)
* 有参
* 返回值
* */
@RequestMapping(value="export/excel",method=RequestMethod.POST)
public ModelAndView exportExcel(Integer page,Integer rows){ ModelAndView mv = new ModelAndView("excelview"); PageInfo<User> list = this.userService.queryUserList(page, rows); List<User> users = list.getList(); mv.addObject("users", users); return mv;
}

3.因为上面代码返回的是一个excel的视图,所以编写excel视图(该视图对数据的导出)

package cn.usermanage.view;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.RichTextString;
import org.springframework.format.datetime.joda.DateTimeFormatterFactory;
import org.springframework.format.datetime.standard.DateTimeContext;
import org.springframework.web.servlet.view.document.AbstractExcelView; import cn.usermanage.bean.Constants;
import cn.usermanage.pojo.User; public class UserExcelView extends AbstractExcelView { @Override
protected void buildExcelDocument(Map<String, Object> model,
HSSFWorkbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception { // 获取查询到的数据
@SuppressWarnings("unchecked")
List<User> users = (List<User>) model.get("users"); // 创建表格
HSSFSheet sheet = workbook.createSheet("会员列表"); // 创建标题行
HSSFRow header = sheet.createRow(0);
header.createCell(0).setCellValue("ID");
header.createCell(1).setCellValue("用户名");
header.createCell(2).setCellValue("姓名");
header.createCell(3).setCellValue("年龄");
header.createCell(4).setCellValue("性别");
header.createCell(5).setCellValue("出生日期");
header.createCell(6).setCellValue("创建时间");
header.createCell(7).setCellValue("更新时间"); // 填充数据
int rowNum = 1;
for (User user : users) {
HSSFRow row = sheet.createRow(rowNum);
row.createCell(0).setCellValue(user.getId());
row.createCell(1).setCellValue(user.getuserName()==null?"":user.getuserName());
row.createCell(2).setCellValue(user.getName());
row.createCell(3).setCellValue(user.getAge());
row.createCell(4).setCellValue(parseSex(user.getSex()));
// row.createCell(5).setCellValue(new DateTime(user.getBirthday()).toString(Constants.DATE));
// row.createCell(6).setCellValue(new DateTime(user.getCreated()).toString(Constants.DATE_TIME));
// row.createCell(7).setCellValue(new DateTime(user.getUpdated()).toString(Constants.DATE_TIME)); rowNum++;
}
// 设置相应头信息,以附件形式下载并且指定文件名
response.setHeader("Content-Disposition", "attachment;filename=" + new String("会员列表.xls".getBytes(),"ISO-8859-1"));
} public String parseSex(Integer code){
String sexStr;
if (code== 1) {
sexStr = "男";
} else if (code == 2) {
sexStr = "女";
} else {
sexStr = "未知";
}
return sexStr;
}
}

4.视图注册到Spring容器,由Spring帮我们创建出来

<!--注册Excel视图  -->
<bean name="excelview" class="cn.usermanage.view.UserExcelView"></bean>

5.在Springmvc中添加视图解析器

    <!-- 配置第二个视图解析器   配置有多个视图解析器时  一定要定义优先级-->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
<property name="order" value="1"></property>
</bean>

注意:在多视图解析器的时候,一定要设置order属性,定义优先级

最新文章

  1. PHP Switch case 条件并用实例
  2. 谈谈.net模块依赖关系及程序结构
  3. 口袋微博android源码服务端和客户端
  4. Lucene.net 全文检索 盘古分词
  5. FZU1683 矩阵
  6. jquery中html()/text()/val()区别
  7. MYSQL数据库重点:事务与锁机制
  8. 如何自学java迅速成为java高手
  9. Android What is Application
  10. Linux C 编译错误总结
  11. poj 2031Building a Space Station
  12. nodeJS之eventproxy源码解读
  13. 【2017-03-30】JS-document对象
  14. docker学习------centos7.5下的swarm集群可视化构建
  15. 给大家推荐一个C#下文件监听器和资源管理器的示例Demo-含源码
  16. MT4下载历史数据
  17. 20190408Linux权限管理week1_day5
  18. API - .after
  19. SpringBoot注册Servlet/Filter/Listener
  20. selenium webdriver处理HTML5 的视频播放

热门文章

  1. 小知识,大智慧(restframework 拾忆)
  2. PHP+MySQL:测试连接+基本DB操作
  3. 男神的约会(状压dp)
  4. 借助EasyNTS云组网,无需拉专线,也能解决设备现场无公网固定IP的问题
  5. 调用第三方物流公司API即时查询物流信息
  6. delphi 创建服务,安装与卸载服务
  7. 阻塞队列 ArrayBlockingQueue 我给自己挖了一个坑
  8. MySql 的备份与恢复
  9. springcloud zuul
  10. 0404-服务注册与发现-客户端负载均衡-两种自定义方式-Ribbon通过代码自定义配置、使用配置文件自定义Ribbon Client