poi java生成excel_Java 利用poi生成excel表格

该博客介绍了一个Java工具类ExcelUtils,用于创建和导出Excel文件。通过接收headerName、headerKey、sheetName和dataList参数,工具类能够生成包含指定字段和数据的Excel工作簿。在Controller类中,展示了如何使用这个工具类,创建一个包含学生信息的Excel文件并进行导出。示例数据包括学生的ID、性别、姓名和年级。
摘要由CSDN通过智能技术生成

所需jar包,如下所示

12a9521658a1fef333d5951d9baefdf7.png

写一个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 voList = new ArrayList();

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按钮,如下所示

b1e33fdfe022ae5a39e0fa110d550d1e.png

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

2e6b61c5685872a2c1a009a561248ca5.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值