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

来源:互联网 发布:北京网络地板生产厂家 编辑:程序博客网 时间:2024/06/07 05:48

我这个项目是在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 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就省略了

原创粉丝点击