JavaWeb에서 Excel 파일을 내보내고 다운로드 상자를 팝업합니다.

인용
Java 웹 개발에서 보고서와 자주 관련된다. 최근 프로젝트에서 데이터베이스에 있는 데이터를 표로 표시하고 Excel 파일로 내보내는 기능을 실현해야 한다.
2. 관련jar 패키지
POI를 사용하면 Excel 가져오기 및 내보내기 문제를 해결할 수 있습니다. POI 다운로드 주소:
poi-3.6-20091214.jar
3. 핵심 코드
먼저 상술한jar 패키지를 가져옵니다.
excel을 생성할 때 일반적인 데이터 원본 형식은 List입니다. 다음은 Excel 형식을 생성하는 코드를 붙입니다.

/**
       *  Excel 
       */
      // 1. workbook, Excel 
      HSSFWorkbook wb = new HSSFWorkbook();
      // 2. workbook sheet, Excel sheet
      HSSFSheet sheet = wb.createSheet("XXX ");
      // 3. sheet 0 , poi excel short
      HSSFRow row = sheet.createRow((int) 0);
      // 4. , , 
      HSSFCellStyle style = wb.createCellStyle();
      //  
      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);

      //  
      HSSFCell cell = row.createCell(0);
      cell.setCellValue(" 1");
      cell.setCellStyle(style);

      cell = row.createCell(1);
      cell.setCellValue(" 2");
      cell.setCellStyle(style);

      cell = row.createCell(2);
      cell.setCellValue(" 3");
      cell.setCellStyle(style);

      cell = row.createCell(3);
      cell.setCellValue(" 4");
      cell.setCellStyle(style);

      cell = row.createCell(4);
      cell.setCellValue(" 5");
      cell.setCellStyle(style);

excel 형식을 생성한 후 excel에 데이터를 쓰려면 다음과 같이 하십시오.

//  Excel
      for (int i = 0; i < lists.size(); i++) {
        row = sheet.createRow((int) i + 1);
        List list= lists.get(i);
        //  , 
        row.createCell(0).setCellValue(list.getXXX());
        row.createCell(1).setCellValue(list.getXXX());
        row.createCell(2).setCellValue(list.getXXX());
        row.createCell(3).setCellValue(list.getXXX());
        row.createCell(4).setCellValue(list.getXXX());
      }

이후에 생성된 Excel이 흐름으로 출력됩니다.
* 다운로드 상자가 팝업되지 않음

FileOutputStream out =new FileOutputStream("E:/XXX.xls");
wb.write(out); 
out.close();

* 다운로드 상자 팝업

String fileName = "XXX ";
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      wb.write(os);
      byte[] content = os.toByteArray();
      InputStream is = new ByteArrayInputStream(content);
      //  response , 
      res.reset();
      res.setContentType("application/vnd.ms-excel;charset=utf-8");
      res.setHeader("Content-Disposition", "attachment;filename="
          + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
      ServletOutputStream out = res.getOutputStream();
      BufferedInputStream bis = null;
      BufferedOutputStream bos = null;

      try {
        bis = new BufferedInputStream(is);
        bos = new BufferedOutputStream(out);
        byte[] buff = new byte[2048];
        int bytesRead;
        // Simple read/write loop.
        while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
          bos.write(buff, 0, bytesRead);
        }
      } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
      } finally {
        if (bis != null)
          bis.close();
        if (bos != null)
          bos.close();
      }

위 작업을 완료하면 다른 페이지로 이동할 수 있습니다.
또한 POI는 Excel 업로드 해석을 웹 페이지에 표시할 수 있습니다. 이 또 다른 글은 요약입니다. 기대하세요!
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기