java导出Excel文件,直接可以下载,然后更新状态,刷新页面

时间:2025-01-29 07:57:32

java后端导出excel,首先前台页面只能通过form提交,在后端组成excel文件后,用response直接输出。然后要进行后序操作,例如我这儿,导出的数据状态更新,然后刷新页面。

1jsp页面:

$("#tempForm").submit();//form提交,请求后台的excel做成方法;

var timer1 = setInterval(refeshPage,1000);//每隔一秒判断下cookie是否已经写回,如果写回,则进行页面刷新

function refeshPage(){
 if(getCookie("updateStatus")=="success"){
  clearInterval(timer1);//每隔一秒的判断操作停止
  delCookie("updateStatus");//删除cookie
  $("#mainForm").submit();//页面刷新
 }
}

2java excel做成:

               // 创建Excel文档
                HSSFWorkbook wb = new HSSFWorkbook();
                // sheet 对应一个工作页
                HSSFSheet sheet = ("***");
                HSSFRow firstrow = (0);
                // 设置单元格类型
                HSSFCellStyle cellStyle = ();
                (HSSFCellStyle.ALIGN_CENTER); // 水平布局:居中
                // 下标为0的行开始
                HSSFCell[] firstcell = new HSSFCell[CountColumnNum];

                 firstcell[0]="";............................//为excel第一行赋值,当作表格表头

                for (short i = 0; i < (); i++) {
                    // 创建电子表格的一行
                    HSSFRow row = (i + 1);
                    HSSFCell[] cells = new HSSFCell[CountColumnNum];

                    cells[0].setCellValue(i + 1);
                    cells[1].setCellValue(new HSSFRichTextString(“AAA”));//分别为表格内容赋值

                 }

                // 调整列宽
                ((short) 1);
                ((short) 2);
                ((short) 3);
                ((short) 4);
                // 创建文件输出流,准备输出电子表格
                ();
                ("octets/stream");
                ("Content-Disposition", "attachment;filename=" + new String(ENTER_FILE_NAME.getBytes("gb2312"), "ISO8859-1") + "_"

+ ()   + ".xls");//设定response的输出格式


                updateLoadStatus(feeIds);//更新导出的数据状态


               //更新完后,设定cookie,用于页面判断更新完成后的标志
                Cookie status = new Cookie("updateStatus","success");
                (600);
                (status);//添加cookie操作必须在写出文件前,如果写在后面,随着数据量增大时cookie无法写入。


                OutputStream out = ();
                (out);//将生成的excel文件输出
                ();
                ();

注意:(1)添加cookie的位置一定要注意,否则数据量大时,cookie无法写到http里面去;

(2)导出后更新数据,更新完后进行刷新,如果不加标志来判断,更新操作可能慢于刷新操作,导致更新的状态无法在列表页面显示。此处的更新标志是用cookie来保存。页面需要不断查询cookie的状态来做更新