动态数据来excel servlet

时间:2015-09-16 00:50:56

标签: java excel servlets

我有一个简单的页面,我试图将值传递给可以用excel写的servlet。

当我获得使用request.getParameter(value)传递的值并使用system.out.println(value)时,它会打印传递的值。

当我尝试在excel中编写value时,它会写入空白,但是当我写一个string时,它会写出确切的string。不知道最近发生了什么。需要帮助。

以下是剧本:

 $(document).ready(function () {

            $('#getFile').click(function () {
                console.log( $('#test').val());
                $.get('excelCreaterServlet', {name: $('#test').val()}, function (response) {
                    console.log(response);
                    window.open("excelCreaterServlet");

                });

            });
        });

以下是servlet代码:

    String name = request.getParameter("name");
    System.out.println(name);

    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet();
    HSSFRow row = sheet.createRow(0);
    HSSFCell cell = row.createCell(0);
    HSSFCell cell1 = row.createCell(1);
    cell.setCellValue(name);
    cell1.setCellValue("teest");



    ByteArrayOutputStream outByteStream = new ByteArrayOutputStream();
    wb.write(outByteStream);
    byte[] outArray = outByteStream.toByteArray();
    response.setContentType("application/ms-excel");
    response.setContentLength(outArray.length);
    response.setHeader("Expires:", "0"); // eliminates browser caching
    response.setHeader("Content-Disposition", "attachment; filename=testxls.xls");
    OutputStream outStream = response.getOutputStream();
    outStream.write(outArray);
    outStream.flush();

1 个答案:

答案 0 :(得分:1)

这是因为您在下面的代码中调用了两次servlet:

    $.get('excelCreaterServlet', 
          {name: $('#test').val()}, 
          function (response) 
          {
              console.log(response);
              window.open("excelCreaterServlet");
          });

获取期间和 window.open 期间的另一次没有名称参数,这会导致您的最终输出为空。

解决方案是使用以下代码,该代码应该可以正常工作:

    window.open("excelCreaterServlet?name="+$('#test').val());