Java 利用poi生成excel表格
所需jar包,如下所示

写一个excel工具类 ExcelUtils .java
import java.lang.reflect.Field;
import java.util.Iterator;
import java.util.List;
import org.apache.poi.hssf.usermodel.HSSFCell;
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; public class ExcelUtils {
/**
* 导出excel
* @param headerName (excel列名称)
* @param headerKey (导出对象属性名)
* @param sheetName (excel 页签名称)
* @param dataList (导出的数据)
* @return
*/
public static HSSFWorkbook createExcel(String[] headerName, String[] headerKey, String sheetName, List dataList) {
try {
if (headerKey.length <= 0) {
return null;
}
if (dataList.size() <= 0) {
return null;
}
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet;
if ((sheetName == null) || (sheetName.equals("")))
sheet = wb.createSheet("Sheet1");
else {
sheet = wb.createSheet(sheetName);
}
HSSFRow row = sheet.createRow(0);
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment((short)2);
HSSFCell cell = null;
if (headerName.length > 0) {
for (int i = 0; i < headerName.length; i++) {
cell = row.createCell(i);
cell.setCellValue(headerName[i]);
cell.setCellStyle(style); }
}
int n = 0;
HSSFCellStyle contextstyle = wb.createCellStyle();
contextstyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0.00_);(#,##0.00)")); HSSFCellStyle contextstyle1 = wb.createCellStyle();
HSSFDataFormat format = wb.createDataFormat();
contextstyle1.setDataFormat(format.getFormat("@")); HSSFCell cell0 = null;
HSSFCell cell1 = null; for (Iterator localIterator = dataList.iterator(); localIterator.hasNext();) {
Object obj = localIterator.next();
Field[] fields = obj.getClass().getDeclaredFields();
row = sheet.createRow(n + 1);
for (int j = 0; j < headerKey.length; j++) {
if (headerName.length <= 0) {
cell0 = row.createCell(j);
cell0.setCellValue(headerKey[j]);
cell0.setCellStyle(style); }
for (int i = 0; i < fields.length; i++) {
if (fields[i].getName().equals(headerKey[j])) {
fields[i].setAccessible(true);
if (fields[i].get(obj) == null) {
row.createCell(j).setCellValue("");
break;
}
if ((fields[i].get(obj) instanceof Number)) {
cell1 = row.createCell(j);
cell1.setCellType(0);
cell1.setCellStyle(contextstyle);
cell1.setCellValue(Double.parseDouble(fields[i].get(obj).toString()));
break;
}
if ("".equals(fields[i].get(obj))) {
cell1 = row.createCell(j);
cell1.setCellStyle(contextstyle1);
row.createCell(j).setCellValue("");
cell1.setCellType(1);
break;
}
row.createCell(j).setCellValue(fields[i].get(obj).toString());
break;
} }
}
n++;
}
for (int i = 0; i < headerKey.length; i++) {
sheet.setColumnWidth(i, headerKey[i].getBytes().length*2*256);
}
HSSFWorkbook localHSSFWorkbook1 = wb;
return localHSSFWorkbook1;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
}
}
}
添加一个vo,studentVo.java
public class StudentVo {
private int id;
private String sex;
private String name;
private String grade;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
在controller类中添加导出excel接口,如下所示
/**
* 国网数据导出
* @param request
* @param response
*/
@RequestMapping("/exportGWDataManageList")
public void exportGWDataManageList(HttpServletRequest request, HttpServletResponse response){
try{
List<StudentVo> voList = new ArrayList<StudentVo>();
StudentVo vo = new StudentVo();
vo.setId("1");
vo.setSex("男");
vo.setName("张三");
vo.setGrade("二年级");
voList.add(vo); vo = new StudentVo();
vo.setId("2");
vo.setSex("女");
vo.setName("李四");
vo.setGrade("一年级");
voList.add(vo); vo = new StudentVo();
vo.setId("3");
vo.setSex("男");
vo.setName("王五");
vo.setGrade("三年级");
voList.add(vo); String[] headerName = { "序号","性别", "姓名", "年级"};
String[] headerKey = { "id","sex", "name", "grade"};
HSSFWorkbook wb = ExcelUtils.createExcel(headerName, headerKey, "年数据管理", voList);
if (wb == null) {
return;
}
response.setContentType("application/vnd.ms-excel");
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date date = new Date();
String str = sdf.format(date);
String fileName = "学生信息管理" + str;
response.setHeader("Content-disposition",
"attachment;filename=" + new String(fileName.getBytes("gb2312"), "ISO-8859-1") + ".xls");
OutputStream ouputStream = response.getOutputStream();
ouputStream.flush();
wb.write(ouputStream);
ouputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
页面只有一个生成excel按钮,如下所示

点击按钮生成excel,内容如下所示

Java 利用poi生成excel表格的更多相关文章
- Java利用POI生成Excel强制换行
前一段时间在做一个学校排课系统时,有一个地方需要利用把课程表生成excel汇出给客户,由于之前用excel都只是简单的应用,在单元格里都是用自动换行,而这次可能需要用到手动强制换行. 于是我在网上找了 ...
- java利用poi生成excel文件后下载本地
1.该功能需要poi的jar包,链接: http://pan.baidu.com/s/1migAtNq 密码: 38fx. 2.首先新建一个实体类,用以存放单个数据 public class Test ...
- Java 利用 poi 生成 Excel文件的通用例子
在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 生 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
- java用poi读取Excel表格中的数据
Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版.Apache POI 代 ...
- java使用poi生成excel
使用poi生成excel通常包含一下几个步骤 创建一个工作簿 创建一个sheet 创建一个Row对象 创建一个cell对象(1个row+1个cell构成一个单元格) 设置单元格内容 设置单元格样式. ...
- java利用poi生成/读取excel表格
1.引入jar包依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi< ...
- java使用poi实现excel表格生成
通过使用poi技术生成Excel,使用反射技术实现自动映射列表的数据. ExportTableUtil.java public class ExportTableUtil { /** * * @Des ...
- Java使用POI解析Excel表格
概述 Excel表格是常用的数据存储工具,项目中经常会遇到导入Excel和导出Excel的功能. 常见的Excel格式有xls和xlsx.07版本以后主要以基于XML的压缩格式作为默认文件格式xlsx ...
随机推荐
- mysqlsh : mysql shell tutorial
MySQL Shell 是一个高级的命令行客户端以及代码编辑器for Mysql. 除了SQL,MySQL Shell也提供脚本能力 for JS and Python. When MySQL she ...
- phalcon的save方法保存失败?
phalcon的save方法保存失败? 因为表中设置了一个字段:disabled, 默认值是1, 在创建数据的时候,disabled没有传值过去,导致save方法一直是false, 当返回false时 ...
- Vue.js示例:树型视图; 模式组件;
树型图 本示例是一个简单的树形视图实现,它展现了组件的递归使用. mycode pen:https://codepen.io/chentianwei411/pen/KGKQxE 重点:递归是如何形成的 ...
- 『MXNet』第六弹_Gluon性能提升
一.符号式编程 1.命令式编程和符号式编程 命令式: def add(a, b): return a + b def fancy_func(a, b, c, d): e = add(a, b) f = ...
- bzoj4516: [Sdoi2016]生成魔咒 sam
题意:每次插入一个数字,查询本质不同的子串有多少个 题解:sam,数字很大,ch数组用map来存,每次ins之后查询一下新建点表示多少个本质不同的子串(l[np]-l[fa[np]]) /****** ...
- 【Java】【7】枚举类
用处:规范了参数的形式,更简洁易懂 实例: //消息类型 public enum MessageTypeEnum { AdminReward(1, "官方消息"), StoreRe ...
- Linux下zoopkeeper的安装和启动
Linux下zoopkeeper的安装和启动 1.什么是zookeeper ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoo ...
- Mysql for Linux安装配置之—— 源码安装
1.安装 --假设已经有mysql-5.5.10.tar.gz以及cmake-2.8.4.tar.gz两个源码压缩文件1)先安装cmake(mysql5.5以后是通过cmake来编译的) # ta ...
- iptables报错:Couldn't load target `accept':/lib64/iptables/libipt_accept.so: cannot open shared object file: No such file or directory
语句:iptables -A INPUT -s 134.192.204.235 -p TCP --dport 11211 -j accept 报错:Couldn't load target `acce ...
- Utf-8+Bom编码导致的读取数据部分异常问题
项目中经常会有这种场景,在配置文件中配置对应关系,项目启动的时候从中读取数据存入map缓存起来,这样使用的时候就可以直接从map找到对应的映射关系. 然后遇到了这么一个诡异的问题,一个简单的映射关系如 ...