1.首先下載用的jar包
poi-4.1.2.jar
commons-math3-3.6.1.jar
jar包下載地址:http://poi.apache.org/download.html
根據系統下載對應的版本
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<CkRegistInfo> ckRegistInfos = bdShouYeService.selectGaiByCkRegistInfo(bdShouYe);
//表頭
String tableHeader[]={"測試1","測試2","測試3","測試4"};
就是excel的這樣
//表的列數
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
//將表頭寫進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
}));
}