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 ...
随机推荐
- Ribbon
Ribbon是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制.Feign也是用的Ribbon,所以在这一章你也可以用@FeignClient Ribbon的一个核心概念是命名的 ...
- R基本图形示例及代码(持续收集)
分布图 hist(MetaData$genes, breaks = 100, main = "Gene number distribution", xlab = "Gen ...
- Centos6.5 升级Openssl + Openssh
xu言: 平时很懒,都不想写blog.今天(2018.05.15)开始尝试每天写一篇吧,看我自己能坚持多久! 准备工作: 为了防止在操作过程中导致ssh远程中断,首先安装一个telnet-server ...
- Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: ..... this is incompatible with sql_mode=only_full_group_by
一.异常信息 org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.mysq ...
- python基础之列表以及切片等操作
列表 定义: 能装对象的对象,列表能放大量的数据,各种类型,且列表内的数据是可以修改保存的,常用 [ ] 去表示,每一项数据之间用逗号隔开 1.列表的索引与切片 1.1 索引 与字符串的索引几乎一致, ...
- suse11安装mysql5.7
下载地址http://mirrors.sohu.com/mysql/MySQL-5.7/ 1. wget -c http://mirrors.sohu.com/mysql/MySQL-5.7/ ...
- 把xml转成javabean的工具类
import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import javax.x ...
- python-day76--django-Form组件
django中Form组件 1. 用户请求数据验证 2. 自动生成错误信息 3. 打包用户提交正确信息 4. 错误:保留上次输入内容 5. 定制页面上显示的HTML标签 引入: from django ...
- Leetcode 1004. 最大连续1的个数 III
1004. 最大连续1的个数 III 显示英文描述 我的提交返回竞赛 用户通过次数97 用户尝试次数143 通过次数102 提交次数299 题目难度Medium 给定一个由若干 0 和 1 组成 ...
- win10 中redis client提示 ERR Client sent AUTH,but no password is set
[问题原因]Redis服务器没有设置密码,但客户端向其发送了AUTH(authentication,身份验证)请求. [解决办法] 确定Redis启动时指定是哪个配置文件 如上图是 redis.win ...