java web将数据导出为Excel格式文件代码片段
本文实例为大家分享了javaweb将数据导出为Excel格式文件的具体代码,供大家参考,具体内容如下
1、jsp代码
<inputtype="button"class="btnbtn-info"onclick="getVerExcel();"value="导出为Excel文件"/>
2、js代码
functiongetVerExcel(){
window.location.href='/pms/jsp/version/getPrdVerListExcel?page='
+$("#getPage").html()+'&key='+$("#select").val();
}
3、java代码
/**
*
*Purpose:将产品版本列表导出为Excel文件
*@paramreq
*请求
*@paramresp
*应答
*@parampage
*当前页数
*@paramkey
*查询条件
*@return
*/
@RequestMapping("getPrdVerListExcel")
publicvoidgetExcel(HttpServletRequestreq,HttpServletResponseresp,Integerpage,Stringkey){
//设置文件的mime类型
resp.setContentType("application/vnd.ms-excel");
//得到所有的数据
List<Version>verList=prdVersionSer.getAllPrdVersion(key);
//若没有数据,则给用户提示
if(verList.size()==0){
req.setAttribute("getFileMsg","没有符合条件的信息!");
req.setAttribute("select",key);
try{
req.getRequestDispatcher("/jsp/version/ver_list.jsp").forward(req,resp);
}catch(Exceptione){
e.printStackTrace();
}
}else{
//存储编码后的文件名
Stringname="name";
//存储文件名称
Stringn="";
if(key!=""){
n=verList.get(0).getPrdName()+"的版本列表";
}else{
n="产品版本列表";
}
try{
name=URLEncoder.encode(n,"utf-8");
}catch(UnsupportedEncodingExceptione1){
e1.printStackTrace();
}
resp.setHeader("content-disposition",
"attachment;filename="+name+".xls;filename*=utf-8''"+name+".xls");
System.out.println("key:"+key);
//从session中删除saveExcelMsg属性
req.getSession().removeAttribute("saveExcelMsg");
//定义一个输出流
ServletOutputStreamsos=null;
//创建一个工作簿
HSSFWorkbookwb=newHSSFWorkbook();
//创建一个工作表
HSSFSheetsheet=null;
if(key!=""){
sheet=wb.createSheet(verList.get(0).getPrdName()+"的版本信息");
}else{
sheet=wb.createSheet("产品版本信息");
}
//返回数据格式对象
//从格式对象中获取对应日期格式的编号,如果格式不存在,该方法会为它生成新的编号
HSSFDataFormatformat=wb.createDataFormat();
shortdfNum=format.getFormat("yyyy-mm-dd");
//创建样式对象
CellStylestyle=wb.createCellStyle();
//设置数据格式
style.setDataFormat(dfNum);
//创建第一行(表格标题)
HSSFRowrow=sheet.createRow(0);
HSSFCellcell=row.createCell(0,HSSFCell.CELL_TYPE_STRING);
if(key!=""){
cell.setCellValue(verList.get(0).getPrdName()+"的产品版本列表");
}else{
cell.setCellValue("产品版本列表");
}
//创建第二行(表头)
row=sheet.createRow(1);
cell=row.createCell(0,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("序号");
cell=row.createCell(1,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("产品名称");
cell=row.createCell(2,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("版本号");
cell=row.createCell(3,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("发布日期");
cell=row.createCell(4,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("版本类型");
cell=row.createCell(5,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue("版本描述");
intnum=1;
//遍历输出verList中的数据,将其存入Excel中
for(inti=0;i<verList.size();i++){
row=sheet.createRow(i+2);
//写入序号
cell=row.createCell(0,HSSFCell.CELL_TYPE_NUMERIC);
cell.setCellValue(num);
num++;
//写入产品名称
cell=row.createCell(1,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(verList.get(i).getPrdName());
//写入版本号
cell=row.createCell(2,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(verList.get(i).getVerNo());
//写入发布日期(日期格式做处理)
cell=row.createCell(3,HSSFCell.CELL_TYPE_STRING);
//将样式应用于单元格
cell.setCellStyle(style);
cell.setCellValue(verList.get(i).getVerDate());
//写入版本类型
cell=row.createCell(4,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(verList.get(i).getVerType());
//写入版本描述
cell=row.createCell(5,HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(verList.get(i).getVerDesc());
}
try{
//保存到文件中
sos=resp.getOutputStream();
wb.write(sos);
}catch(Exceptione){
e.printStackTrace();
}finally{
if(sos!=null){
try{
sos.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。