如何在jsp中的excel文件中保存生成的表响应

时间:2015-06-18 11:47:56

标签: mysql jsp servlets file-upload web

我在数据库中有一些数据,通过一些JSP和servlet我已经创建了这样一个具有接口的Web应用程序。通过接口,我可以在数据库中选择表的列名,在下一个文本框中键入关键字,并可以搜索那些行包含该特定列中的关键字。我使用引导表以表格格式查看输出。 我希望如果用户单击位于表格底部的保存按钮,则会打开一个弹出窗口,他可以输入名称并选择位置并保存文件。

所有其他内容,例如获取数据和显示数据都没有问题。

1 个答案:

答案 0 :(得分:0)

您可以使用HSSFRow将您的jsp列表解析为java中的Excel工作表

 HSSFWorkbook workbook = new HSSFWorkbook();
    HSSFSheet sheet = workbook.createSheet("Sample sheet");

然后你需要为Excel工作表创建一个标题

// FOR HEADERS

HSSFRow rowhead=   sheet.createRow((short)0);
        rowhead.createCell(0).setCellValue("ID");
        rowhead.createCell(1).setCellValue("NAME");

现在,您将根据列表大小填充列中的数据。

//暂停列表

    int rownum = 1;
    for (YourObject obj : listOfObjects) {
        Row row = sheet.createRow(rownum++); 
        row.createCell(0).setCellValue(obj.getID());
        row.createCell(1).setCellValue(obj.getName());
    }

将数据写入xls文件

 try {    

                 ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();

                 workbook.write(outByteStream);

                 byte[] outArray = outByteStream.toByteArray();

                 response.setContentType("application/vnd.ms-excel");

                 response.setContentLength(outArray.length);

                 response.setHeader("Expires:", "0"); // eliminates browser caching

                 response.setHeader("Pragma","cache");

                 response.setHeader("Cache-Control","private");

                 response.setHeader("Content-Disposition", "attachment; filename=sample.xls");

                 OutputStream outStream = response.getOutputStream();

                 outStream.write(outArray);

                 outStream.flush();

                 outStream.close();

                 System.out.println("Excel written successfully..");
    } catch (FileNotFoundException e) {   
                 e.printStackTrace();
    }catch (IOException e)
    {    
                 e.printStackTrace();
    }

希望它有所帮助!!!