poi和excel下载

//前端设置下载方法

function f_exportGrid(){
var para = $("#form1").serializeArray()
var url = action+'!exportGrid.action?';
for(var i=0;i<para.length;i++){
url += para[i].name+'='+para[i].value+'&';//加入参数
}
var pageNo = gridManager.options.page;
var pageSize = gridManager.options.pageSize;
url += 'pageNo='+pageNo;
url += '&pageSize='+pageSize;
location.href=url;//下载行为
}

 

//后台

public void exportGrid1(List list) throws IOException {
// 生成Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("数据");
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setAlignment(HorizontalAlignment.CENTER);// 左右居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 上下居中
cellStyle.setBorderTop(BorderStyle.THIN);// 上边框 细边线
cellStyle.setBorderBottom(BorderStyle.THIN);// 下边框 细边线
cellStyle.setBorderLeft(BorderStyle.THIN);// 左边框 细边线
cellStyle.setBorderRight(BorderStyle.THIN);// 右边框 细边线
// 设置字体样式
Font titleFont = wb.createFont();
titleFont.setFontHeightInPoints((short) 13); // 字体高度
titleFont.setFontName("宋体"); // 字体样式
titleFont.setBold(true);
cellStyle.setFont(titleFont);
String name = "";
int start=0;
int num = 0 ;
for (int i = 0; i < list.size(); i++) {
Map map = (Map)list.get(i);
String name1 = map.get("UserName").toString();
if(!name1.equals(name) ){

if(StringUtils.isBlank(name)){
name=name1;
}else{
if(num != 1){
int end = num+start-1;
sheet.addMergedRegion(new CellRangeAddress(start,end,0,0));  //设置合并列
sheet.addMergedRegion(new CellRangeAddress(start,end,3,3));//设置合并列
}
name = name1;
}
start = i+1;
num=1;
}else{
num ++ ;
if(name1.equals(name) && i==list.size()-1){
int end = num+start-1;
sheet.addMergedRegion(new CellRangeAddress(start,end,0,0));
sheet.addMergedRegion(new CellRangeAddress(start,end,3,3));
}
//start = i;
}
}
// 表头
String[] heararr = {"人员","点位","时长(单位:分钟)","总时长(单位:分钟)"};
//System.err.println("heararr: "+heararr.length);
HSSFRow headRow = sheet.createRow(0);
for (int i = 0; i < heararr.length; i++) {
HSSFCell cell = headRow.createCell(i);
cell.setCellValue(heararr[i]);
cell.setCellStyle(cellStyle);
sheet.autoSizeColumn(i);// 自动设置宽度
}
HSSFCellStyle dataStyle = wb.createCellStyle();
dataStyle.setAlignment(HorizontalAlignment.CENTER);// 左右居中
dataStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 上下居中
dataStyle.setBorderTop(BorderStyle.THIN);// 上边框 细边线
dataStyle.setBorderBottom(BorderStyle.THIN);// 下边框 细边线
dataStyle.setBorderLeft(BorderStyle.THIN);// 左边框 细边线
dataStyle.setBorderRight(BorderStyle.THIN);// 右边框 细边线
Font dataFont = wb.createFont();
dataFont.setFontHeightInPoints((short) 11); // 字体高度
titleFont.setFontName("宋体"); // 字体样式
dataStyle.setFont(dataFont);
dataStyle.setWrapText(true);//设置自动换行
for (int i = 0; i < list.size(); i++) {
HSSFRow dataRow = sheet.createRow(sheet.getLastRowNum() + 1);
Map map = (Map)list.get(i);
HSSFCell cell1 = dataRow.createCell(0);
cell1.setCellValue(map.get("UserName").toString());
cell1.setCellStyle(dataStyle);
sheet.autoSizeColumn(0);// 自动设置宽度
cell1 = dataRow.createCell(1);
cell1.setCellValue(map.get("OutfallsName").toString());
cell1.setCellStyle(dataStyle);
sheet.autoSizeColumn(1);// 自动设置宽度
cell1 = dataRow.createCell(2);
cell1.setCellValue(map.get("Num").toString());
cell1.setCellStyle(dataStyle);
sheet.autoSizeColumn(2);// 自动设置宽度
cell1 = dataRow.createCell(3);
cell1.setCellValue(map.get("Sum").toString());
cell1.setCellStyle(dataStyle);
sheet.autoSizeColumn(3);// 自动设置宽度
}
// 下载导出
// 设置头信息


ServletActionContext.getResponse().setContentType(
"application/vnd.ms-excel");
String filename = "任务人员.xls";
HttpServletRequest request = ServletActionContext.getRequest();
filename = processFileName(request,filename);
ServletActionContext.getResponse().setHeader("Content-Disposition",
"attachment;filename=" + filename);

ServletOutputStream outputStream = ServletActionContext.getResponse()
.getOutputStream();
wb.write(outputStream);

wb.close();
}

转载于:https://www.cnblogs.com/hnzkljq/p/10207595.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值