POI技术实现对excel的导出
需求:客户端传来两个参数,当前页码和每页的条数,根据传来的参数实现对数据的导出
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属性,定义优先级
POI技术实现对excel的导出的更多相关文章
- 使用POI来实现对Excel的读写操作
事实上我感觉直接贴代码就好了.代码里面差点儿做到每一行一个凝视.应该看起来会比較简单 代码托管在github上:https://github.com/chsj1/ExcelUtils package ...
- JAVA-----基于POI实现对Excel导入
在日常项目开发中, 数据录入和导出是十分普遍的需求,因此,导入导出也成为了开发中一个经典的功能.数据导出的格式一般是excel或者pdf,而批量导入的信息一般是借助excel来减轻工作量,提高效率. ...
- 通过vb.net 和NPOI实现对excel的读操作
通过vb.net 和NPOI实现对excel的读操作,很久很久前用过vb,这次朋友的代码是vb.net写的需要一个excel的操作, 就顾着着实现功能了,大家凑合着看吧 Option Explicit ...
- 利用Apache POI 实现简单的Excel表格导出
1.利用POI API实现简单的Excel表格导出 首先假设一个学生实体类: package com.sun.poi.domain; import java.io.Serializable; impo ...
- Apache POI 实现对 Excel 文件读写
1. Apache POI 简介 Apache POI是Apache软件基金会的开放源码函式库. 提供API给Java应用程序对Microsoft Office格式档案读和写的功能. 老外起名字总是很 ...
- 在Asp.Net MVC中使用NPOI插件实现对Excel的操作(导入,导出,合并单元格,设置样式,输入公式)
前言 NPOI 是 POI 项目的.NET版本,它不使用 Office COM 组件,不需要安装 Microsoft Office,目前支持 Office 2003 和 2007 版本. 1.整个Ex ...
- java通过POI和easypoi实现Excel的导出
前言 在工作经常会遇到excel导出报表的功能,自己也做过一些,然后在项目里看到同事封装的一个excel导出工具类,着实不错,拿来分享一下.然后,又在网上看到一个使用easypoi实现cxcel导出的 ...
- SpringBoot中使用POI,快速实现Excel导入导出
导出Excel 整体来说,Excel有.xls和.xlsx,那么在POI中这两个也对应两个不同的类,但是类名不同,方法基本都是一致的,因此我这里将只介绍.xls一种. 整体来说,可以分为如下七个步骤: ...
- 使用 xlrd 模块实现对excel 的读取、excel转json 、excel 转 mysql insert 语句
#-*- coding:utf-8 -*- # 处理 excel 中的 area 为 Mysql insert 语句 import xlrd, json, codecs, os # data = xl ...
随机推荐
- hdu 3062+1824(2-sat入门)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3062 思路:根据矛盾关系连边(如果a与b矛盾,则连边a'->b,b'->a),然后强连通缩 ...
- <转载> Jquery的使用技巧-实用!
1.使用方法在需要使用JQuery的页面中引入JQuery的js文件即可.例如:<script type="text/javascript" src="js/jqu ...
- 集成 SOLR 到 TOMCAT 中(傻瓜教程)
按照如下配置,整个 Solr 是绿色版的,可以将 Tomcat 目录复制到任何一个地方运行 1.下载 solr 4.3 版本 2.下载 Tomcat 7 ( 6 也可以),另外可以根据系统下载 32 ...
- POJ3259(虫洞)
题目大意:给你一张图,先输入m条双向边(权值为正),再输入w条单向边(权值为负),判断是否有负环 题目思路:bellman-ford或者SPFA都行,我用的是SPFA(因为和POJ1860类似,就不加 ...
- MVC action 执行两次 background url()
大年初七第一天上班就来解决问题,我也是醉了. 其实是历史遗留问题,今天看到后不能忍了,赶紧解决一下. 旧系统中以一个微信版本的列表页面没有问题,在新系统中重新开发一边后发现列表页面的action总是请 ...
- 【BZOJ3122】[Sdoi2013]随机数生成器 BSGS+exgcd+特判
[BZOJ3122][Sdoi2013]随机数生成器 Description Input 输入含有多组数据,第一行一个正整数T,表示这个测试点内的数据组数. 接下来T行,每行有五个整数p,a,b, ...
- 《从零开始学Swift》学习笔记(Day 19)——函数参数传递
原创文章,欢迎转载.转载请注明:关东升的博客 函数的语法格式如下: func 函数名(参数列表) -> 返回值类型 { 语句组 return 返回值 } 关键字是func. 多个参数列表之间 ...
- C语言8.3冒泡排序
8.3.1 例8-5 题目:输入n个正整数,将他们从小到大排序后输出,要求使用冒泡排序法. 而在自己抄写代码的时候,出现了以下问题: # include<stdio.h> void bub ...
- Hibernate 检索(查询)策略
1.立即检索 (查询) 立即检索就是在调用get方法的时候,会直接向数据库发出sql语句查询,并将结果放到session缓存中,在查询的时候会将级联的对象一对查出,(发出多条sql语句): 明显的缺点 ...
- java中的四种权限
1.私有权限(private) private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类).被private修饰的成员,只能在定义它们的类中使用,在其他类中不能调用. ...