java实现poi导出_java实现使用poi导出excel

本文详细介绍了如何使用Java的POI库来创建并导出Excel文件。首先,需要下载相应的jar包,接着在后端创建并设置Excel工作簿、样式、字体和表头,再插入数据。最后,通过前端接口发送请求,后端生成响应并返回文件流,前端接收到文件流后进行下载。
摘要由CSDN通过智能技术生成

1.首先下载用的jar包

poi-4.1.2.jar

commons-math3-3.6.1.jar

根据系统下载对应的版本

4777077eca1f7f26f2bcb5eceb233484.png

2.java后端

/**

* 获得excel表头信息

*/

private static HSSFSheet getHssfSheet (HSSFSheet sheet,String tableHeader[],short cellNumber,HSSFFont font,HSSFCellStyle style)

{

HSSFHeader header = sheet.getHeader();

header.setCenter("");

HSSFRow row = sheet.createRow(0);

row.setHeight((short)400);

//sheet的头

for(int k = 0;k < cellNumber;k++){

HSSFCell cell = row.createCell((short) k);//创建第0行第k列

cell.setCellValue(tableHeader[k]);//设置第0行第k列的值

sheet.setColumnWidth((short)k,(short)7000);//设置列的宽度

font.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色.

font.setFontHeight((short)350); //设置单元字体高度

style.setFont(font);//设置字体风格

cell.setCellStyle(style);

}

return  sheet;

}

然后在controller里写

//查询要导出的信息

List ckRegistInfos = bdShouYeService.selectGaiByCkRegistInfo(bdShouYe);

//表头

String tableHeader[]={"测试1","测试2","测试3","测试4"};

就是excel的这样

f8c5a5386a38c37e2cfdf2c10476f906.png

//表的列数

short cellNumber = (short) tableHeader.length;

//创建一个excel

HSSFWorkbook workbook = new HSSFWorkbook();

//设置表头类型

HSSFCellStyle style = workbook.createCellStyle();

style.setAlignment(HorizontalAlignment.CENTER);//居中

//设置字体

HSSFFont font = workbook.createFont();

//创建一个sheet

HSSFSheet sheet = workbook.createSheet("1");

HSSFSheet sheet2 = workbook.createSheet("2");

就对应excel

2755ce219a843afc47ae26d5a863725e.png

//将表头写进excel

sheet = getHssfSheet(sheet, tableHeader, cellNumber, font, style);

sheet2 = getHssfSheet(sheet2, tableHeader, cellNumber, font, style);

//插入数据

for (int i = 0; i < ckRegistInfos.size(); i++) {

//得到当前具体信息

CkRegistInfo ckRegistInfo = ckRegistInfos.get(i);

//获取下一行

HSSFRow rows = sheet.createRow((short)(i+1));

rows.setHeight((short)400);

//测试1

HSSFCell cell1 = rows.createCell((short)0);

cell1 .setCellValue(ckRegistInfo.getName());

cell1 .setCellStyle(style);

//测试2

HSSFCell cell2= rows.createCell((short)1);

cell2.setCellValue(ckRegistInfo.getCardId());

cell2.setCellStyle(style);

//测试3

HSSFCell cell3= rows.createCell((short)2);

cell3.setCellValue(ckRegistInfo.getSex());

cell3.setCellStyle(style);

//测试4

HSSFCell cell4= rows.createCell((short)3);

cell4.setCellValue(ckRegistInfo.getRegistTime());

cell4.setCellStyle(style);

//写入流,返回信息

String fileName ="体检缺项信息";

try{

BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());

response.setHeader("Content-disposition","attachment;filename="+new String(fileName.getBytes(),"ISO-8859-1"));//filename是下载的xls的名

workbook.write(out);

out.flush();

out.close();

workbook.close();

} catch (Exception e) {

e.printStackTrace();

}

3.前端

function Excel()

{

var url = url ;

var xhr = new XMLHttpRequest();

xhr.open('post', url, true);

xhr.responseType = 'blob';

xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');

xhr.onload = function (e) {

if (this.status == 200) {

var blob = this.response;

var file_name='信息登记.xls';

// for IE

if (window.navigator && window.navigator.msSaveOrOpenBlob) {

document.getElementById('selectGaiExcel').disabled=false;

window.navigator.msSaveOrOpenBlob(blob, file_name);

}

// for Non-IE (chrome, firefox etc.)

else {

document.getElementById('selectGaiExcel').disabled=false;

var a = document.createElement('a');

document.body.appendChild(a);

a.style = 'display: none';

var url = window.URL.createObjectURL(blob);

a.href =  url;

a.download = file_name;

a.click();

a.remove();

window.URL.revokeObjectURL(url);

}

}

}

xhr.send(JSON.stringify({

"beginHappenTime" : beginHappenTime,

"endHappenTime":endHappenTime

}));

}

68f724bad5a33d9a9f6bd2ca7369ecb7.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值