关于怎么将导出文件设置为中文名字

@RequestMapping(value = "down")
@ResponseBody
public void down(HttpServletRequest request,

HttpServletResponse response, @ModelAttribute("user")User user) throws Exception {


PageData pd1 = this.getPageData();
// 设置响应是一个可下载文件固定写法
System.out.println("***************************************************************************************");

/*response.setCharacterEncoding("utf-8");*/

/*response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls");*/

/*这一个就是将文件设置为中文名字,之前用的是上面这一种方式,但是没有中文输出,就用了下面这一种*/

/*response.setHeader("Content_Disposition", "attachment;filename=" +new String("论文信息表.xls".getBytes(),"ISO-8859-1"));*/


Calendar now = Calendar.getInstance(); 

/*设置年份,并且判断月份是否是下半年*/

int year=now.get(Calendar.YEAR);
int month=now.get(Calendar.MONTH);
if(month>=9){
year+=1;
}
   System.out.println("年: " + year);
CellRangeAddress cellRangeAddress=new CellRangeAddress(0,0,0,10);

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

String QueryGrade=request.getParameter("QueryGrade");
String QueryProCode=request.getParameter("QueryProCode");
String QueryClassCode=request.getParameter("QueryClassCode");
String name="";
if(request.getParameter("name")!=null){
name=new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");
}
/*

System.out.println("输出-----------------");
System.out.println(QueryGrade);
System.out.println(QueryProCode);
System.out.println(QueryClassCode);
System.out.println(name);

*/

pd1.put("QueryGrade", QueryGrade);
pd1.put("QueryProCode", QueryProCode);
pd1.put("QueryClassCode", QueryClassCode);
pd1.put("name", name);

list=infoService.getInfoExcel(pd1);
System.out.println("****************************");
System.out.println(list.toString());
System.out.println("****************************");

        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);



/*response.setCharacterEncoding("utf-8");*/

/*response.setHeader("Content-Disposition", "attachment;filename="+filename+".xls");*/

response.setHeader("Content-Disposition", "attachment;filename="+new String((year+"届本科毕业生论文(设计)选题汇总表"+".xls").getBytes(),"ISO-8859-1"));



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);

}
//设置第一列的宽度是15个字符宽度

sheet.setColumnWidth(0, 18 * 256);
sheet.setColumnWidth(1, 25 * 256);
sheet.setColumnWidth(3, 35 * 256);
sheet.setColumnWidth(4, 14 * 256);
sheet.setColumnWidth(5, 35 * 256);
sheet.setColumnWidth(7, 14 * 256);
sheet.setColumnWidth(8, 10 * 256);
sheet.setColumnWidth(9, 10 * 256);
sheet.setColumnWidth(10, 20 * 256);


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

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


row.createCell(0).setCellValue(pd.getString("CollegeName"));
row.createCell(1).setCellValue(pd.getString("pname"));
row.createCell(2).setCellValue(pd.getString("Grade"));
row.createCell(3).setCellValue(pd.getString("classname"));
row.createCell(4).setCellValue(pd.getString("sname"));
row.createCell(5).setCellValue(pd.getString("Topic"));
if(pd.getString("Type").equals("true")){
row.createCell(6).setCellValue("设计");

}
else{
row.createCell(6).setCellValue("论文");
}
row.createCell(7).setCellValue(pd.getString("Name"));
row.createCell(8).setCellValue(pd.getString("HighestEducation"));
row.createCell(9).setCellValue(pd.getString("Title"));

if(pd.getString("IsOutside").equals("true")){
row.createCell(10).setCellValue("是");

}
else{
row.createCell(10).setCellValue("否");
}
/*if(pd.getString("IsOutSide")=="0"){
row.createCell(11).setCellValue("否");
}*/
//row.createCell(11).setCellValue(pd.getString("IsOutSide"));



}
ServletOutputStream out = response.getOutputStream();
wb.write(out); 
out.close();
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值