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 ...
随机推荐
- ThinkPHP的数据操作
查询: 具体数据的操作方法使用: 1. where()条件 $model->where(条件值); //条件值就是sql语句where后边的结果值 2. limit() 限制条数 $ ...
- HeadFirst Ruby 第十四章总结 Web apps: Serving HTML
前言 这一章节主要讲了如何利用 Ruby 中的 Sinatra 这个 gem 来创建一个 Web app 的具体流程,其中的要点包括了: Sinatra, a third party library ...
- English trip EM2-PE-1B Teacher:Patirck
PE = 演讲课 课上内容(Lesson) How are you today? 你今天怎么样? What is your name? 你的名字叫什么? What do you come from ...
- WinForm下窗体权限设计
权限设计 笔者不才看了园子里面很多园友写关于权限设计这块内容,那么笔者也在添一笔.这个是笔者在上完软件工程课程后,上交的一篇笔者论文,这里分享给大家交流,当然笔者经验尚浅,若内容有误,请大家指点出 ...
- 微信小程序获取腾讯经纬度,得到具体地址
getCityNameOFLocation: function() { var that = this; wx.getLocation({ type: 'wgs84', // 默认为 wgs84 返回 ...
- LCS(最长公共子序列)问题
例题见挑战程序设计竞赛P56 解释:子序列是从原序列中按顺序(可以跳着)抽取出来的,序列是不连续的,这是其和子串最大的区别: 我们可以定义dp数组为dp[i][j],表示的是s1-si和t1-ti对应 ...
- dp 最大正方形
洛谷P1387 最大正方形 分析:画图模拟,发现以坐标(i,j)为右下顶点的正方形可以根据它左上方的三个点得到,就很轻松写出状态转移方程了. 代码: #include<bits/stdc++.h ...
- 『计算机视觉』Mask-RCNN_项目文档翻译
基础介绍 项目地址:Mask_RCNN 语言框架:Python 3, Keras, and TensorFlow Python 3.4, TensorFlow 1.3, Keras 2.0.8 其他依 ...
- 移动端自动化测试-Mac-IOS-Appium环境搭建
第一步 安装JDK,本机如果带有1.7及以上版本的,则可忽略此安装步骤. 百度下载JDK,并配置环境变量 vim ~/.bash_profile 检查是否安装成功 java -version 第二步 ...
- bzoj2300#2300. [HAOI2011]防线修建
题解:带删点的维护凸包,1.删点2.查询凸包周长 题解:倒着做就成了带加点的维护凸包,加点时维护一下周长就没了 //#pragma GCC optimize(2) //#pragma GCC opti ...