您的位置:首页 > 其它

SSM项目,关于如何导出数据

2017-08-25 09:22 387 查看
我这个项目是在maven上的,jar包应该就是poi

其中 用到一些BootStrap的标签,不知道为什么用,可能是方便吧(反正是老师让用的)

BootSrtap可以在http://www.runoob.com/bootstrap/bootstrap-helper-classes.html这个网站中学习

具体就是首先全部显示的每一条数据,在前面加一个checkbox,然后进行写全选按钮(代码省略)

jsp中

<div class="input-group line left" id="left">
<a href="#" class="btn btn-primary btn-sm"
data-url='<%=path%>/down.xls' data-toggle="modal"
data-target="#addClass" data-back='<%=path%>/infolist'
onclick="importExcel(this)">Excel导出</a>

</div>

ajax

function importExcel(obj){
var chk_value = [];
$('input[name="uID"]:checked').each(function(){ 
chk_value.push($(this).val()); 
});
if(chk_value.length==0 ||chk_value==null){
alerts('提示!','请选择需要导出的数据');
}else{
$.confirm({
title:'导出Excel表格',
content:'确定导出选中的内容?',
confirmButton:'确定',
confirm:function(){
/*$(obj).load($(obj).data("url"),{"chk_value":chk_value});*/
window.location.href=$(obj).data("url")+"?chk_value="+chk_value;

},
cancelButton:'取消',
cancel:function(){
location.reload();
alters('取消','您已取消对选中信息的Excel文件的下载');
}
});
}



(其中check就是选中的那些列表的ID,以便于重数据库查询)

之后跳转控制层

@RequestMapping(value = "down.xls")
@ResponseBody
public void down(String
4000
filename, HttpServletRequest request,
HttpServletResponse response, @ModelAttribute("user")User user,
ModelMap mp, Page page) throws Exception {
// 设置响应是一个可下载文件固定写法
System.out.println("***************************************************************************************");

response.setContentType("application/x-execl");
// 设置文件的下载名称

// 设置响应文件配置
response.setHeader("Content_Disposition", "attachment;filename=" +new String("论文信息表.xls".getBytes(),"ISO-8859-1"));

Calendar now = Calendar.getInstance(); 
int year=now.get(Calendar.YEAR);
   System.out.println("年: " + year);
CellRangeAddress cellRangeAddress=new CellRangeAddress(0,0,0,9);

String dd = request.getParameter("chk_value");
String a[] = dd.split(",");

List<PageData> list = new ArrayList<PageData>();

for (int i = 0; i < a.length; i++) {

PageData pd = this.getPageData();

pd = infoService.getPageDataById(Integer.parseInt(a[i]));

list.add(pd);

}
System.out.println("***********************************");
for (PageData pageData : list) {

System.out.println(pageData);
}
System.out.println("***********************************");
// 声明一个Excel表格
HSSFWorkbook wb = new HSSFWorkbook();

// 设置表单的居中格式
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
//字体
HSSFFont font=wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short)10);
style.setFont(font);

HSSFCellStyle style1 = wb.createCellStyle();
style1.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
style1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
//字体
HSSFFont font1=wb.createFont();
font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
font1.setFontHeightInPoints((short)16);
style1.setFont(font1);
// 然后就是开始创建表头,还有表中的数据

// 声明Exceln表名
HSSFSheet sheet = wb.createSheet(year+"毕业生毕业论文题目汇总表");
// 然后在表明中创建第一行
sheet.addMergedRegion(cellRangeAddress);

//设置一个标题,并对标题就是命名,这里边加了一个年限

HSSFRow row1=sheet.createRow(0);
HSSFCell cell1=row1.createCell(0);
cell1.setCellStyle(style1);
cell1.setCellValue(year+"年毕业生毕业论文题目汇总表");

HSSFRow row = sheet.createRow(1);// 首先在创建第一行
String[] title={"编号","学院","班级","论文类型","论文题目","学号","姓名","导师","联系方式","备注"};
HSSFCell cell = row.createCell(1);

for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);

}
//设置每列的宽度是多少个字符宽度
sheet.setColumnWidth(0, 5 * 256);
sheet.setColumnWidth(1, 18 * 256);
sheet.setColumnWidth(2, 25 * 256);
sheet.setColumnWidth(4, 35 * 256);
sheet.setColumnWidth(5, 14 * 256);
sheet.setColumnWidth(8, 14 * 256);
sheet.setColumnWidth(9, 45 * 256);

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

row = sheet.createRow(i+2);
PageData pd=list.get(i);
row.createCell(0).setCellValue(i);

row.createCell(1).setCellValue(pd.getString("CollegeName"));
row.createCell(2).setCellValue(pd.getString("classname"));
row.createCell(3).setCellValue(pd.getString("TypeCode"));
row.createCell(4).setCellValue(pd.getString("Topic"));
row.createCell(5).setCellValue(pd.getString("StudentID"));
row.createCell(6).setCellValue(pd.getString("sname"));
row.createCell(7).setCellValue(pd.getString("Name"));
row.createCell(8).setCellValue(pd.getString("phone"));
row.createCell(9).setCellValue(pd.getString("Note"));

}

ServletOutputStream out = response.getOutputStream();
wb.write(out); 
out.close();

}

这里service层和xml就省略了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: