0

Apache poi を使用して Excel ファイルを作成できますが、サーバー上に作成される Excel ファイルをユーザーがダウンロードできるようにするにはどうすればよいですか?

public String export(UserDetails user) throws Exception {
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet sheet = wb.createSheet("new sheet");
    List<UserDetails> lstUserDetail = getUserDetailList();

    for (short RowNum=1; RowNum<lstUserDetail.size();RowNum++){
        HSSFRow row = sheet.createRow(RowNum);
        UserDetails userDetail = lstUserDetail.get(RowNum);

        HSSFCell cell1 = row.createCell((short)0);
        HSSFCell cell2 = row.createCell((short)1);
        HSSFCell cell3 = row.createCell((short)2);
        HSSFCell cell4 = row.createCell((short)3);

        cell2.setCellValue(userDetail.getStrUserName());
        cell3.setCellValue(userDetail.getStrEMail());
        cell4.setCellValue(userDetail.getStrUserPhone());
        cell5.setCellValue(userDetail.getStrUserAddress());
    }

    FileOutputStream fileOut = new FileOutputStream("E:\\workbook.xls");
    wb.write(fileOut);
    fileOut.close();

    return null;
}
4

1 に答える 1

0

ユーザーがダウンロード リンクをクリックすると、FileDownload サーブレットを呼び出す場所を以下で試してください。

public class FileDownload extends HttpServlet {
    public void doGet(HttpServletRequest request,HttpServletResponse response)
            throws ServletException, IOException {

        String filename = "E:\\workbook.xls";


        ServletOutputStream out = response.getOutputStream();
        FileInputStream in = new FileInputStream(filename);

        response.setContentType("application/vnd.ms-excel");
        response.addHeader("content-disposition",
                "attachment; filename=" + filename);

        int octet;
        while((octet = in.read()) != -1)
            out.write(octet);

        in.close();
        out.close();
    }


}
于 2013-07-04T14:44:04.450 に答える