Java는 poi를 사용하여 Excel을 가져오고 내 보냅니다 (다양한 방법).

1. Excel 가져 오기 및 내보내기

1. 로컬 내보내기 템플릿을 통해 Excel로 내보내기 (더 복잡한 헤더 내보내기에 적합)

이것은 내가 로컬에 넣은 템플릿입니다 

다음은 내가 내 보낸 방법입니다.

쿼리 된 데이터를 2 차원 배열에 넣고 2 차원 배열의 데이터를 읽어 내 보냅니다.

 

 

내보내기 후 데이터는

 

2. POI를 통해 엑셀을 통해 데이터 내보내기  

코드로 직접 이동하면 사용자 엔티티 클래스를 직접 만들어야합니다.

@Override
    public void downloadFile (HttpServletRequest request, HttpServletResponse response) {         try {             User users = new User ();             users.setId ( "1222");             users.setUsername ( "张三");             users.setPhone ( "1760767162");             users.setAddress ( "深圳 塘 朗");             users.setCardno ( "4325241995086246");             users.setTitel ( "java 删 库 到 跑路");             users.setState ( "");                // 获取 数据             List <User> list = new ArrayList <User> ();              list.add (사용자);

            










               // excel title
               String [] title = { "학생 이름", "휴대폰 번호", "ID 번호", "주소", "강좌 이름", "강좌 결제 상태", "id"};

               // 엑셀 파일명
               String fileName = "agent"+ users.getUsername () + "등록 정보 통계표"+ System.currentTimeMillis () + ".xls";
               // CellRangeAddress callRangeAddress = new
               // CellRangeAddress (0, 0, 0,6); // 시작 행, 끝 행, 시작 열, 끝 열

               // sheet 名
               String sheetName = "招生 信息 统计表 22";
               String [] [] content = new String [list.size ()] [title.length];
               문자열 상태 = "";
               for (int i = 0; i <list.size (); i ++) {                   // content [i] = new String [title.length];                   사용자 사용자 = list.get (i);                   if (null! = user.getState ()) {                      state = "已 付费";                   } else {                      state = "未 付费";                   }                   / *                    * 날짜 날짜 = obj.getReportDate (); content [i] [0] =                    * sDateFormat.format (날짜);





                     





                   * /
                  
                  content [i] [0] = user.getUsername ();
                  content [i] [1] = user.getPhone () + "";
                  content [i] [2] = user.getCardno () + "";
                  content [i] [3] = user.getAddress () + "";
                  content [i] [4] = user.getTitel ();
                  content [i] [5] = 상태;
                  content [i] [6] = 사용자 .getId ();
               }
               // 병합 된 셀의 내용
               String mergeCell = "Agent"+ users.getUsername () + "등록 된 총 학생 수 :"+ list.size () + "people";
               Integer cellNum = 5 ;// 셀의 6 개 열 병합                // HSSFWorkbook
               생성
// HSSFWorkbook wb1 = new HSSFWorkbook ();
               HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook (sheetName, title, content, null, mergeCell, cellNum);
               // 파일 errFile = new File (CoinConfig.RESOURCE_BASIC_PATH + "/"
               // + fileName);
               // 响应 到 客户 端
               try {                   this.setResponseHeader (response, fileName);                   OutputStream os = response.getOutputStream ();                   // OutputStream os = new FileOutputStream (errFile);                   wb.write (os);                   os.flush ();                   os.close ();                } catch (예외 e) {                   e.printStackTrace ();                }









        
        
        } catch (예외 e) {             log.error ( "다운로드 실패", e);         }     }


        

도구 방법

public class ExcelUtil {

   / **
     * Excel 내보내기
     * @param sheetName 시트 이름
     * @param title title
     * @param 값 content
     * @param wb HSSFWorkbook 객체
     * @return
     * /
    public static HSSFWorkbook getHSSFWorkbook (String sheetName, String [] title, String [ ] [] 값, HSSFWorkbook wb, String mergeCell, Integer cellNum) {

        // 첫 번째 단계는 Excel 파일에 해당하는 HSSFWorkbook을 만드는 것입니다.
        if (wb == null) {             wb = new HSSFWorkbook ();         }

        // 두 번째 단계는 Excel 파일의
        HSSFSheet 시트 에 해당하는 시트를 통합 문서에 추가하는 것입니다. file = wb.createSheet (sheetName);

        // 세 번째 단계는 헤더의 0 행을 시트에 추가하는 것입니다 이전 버전의 poi는 Excel의 행과 열 수에 제한이 있습니다
        HSSFRow row = sheet.createRow (0);

        // 네 번째 단계는 셀을 생성하고 값 헤더를 설정하는 것입니다. 헤더를 중앙으로 설정하십시오.
        HSSFCellStyle style = wb.createCellStyle ();
        style.setAlignment (HSSFCellStyle.ALIGN_CENTER); // 중앙 포맷을 생성하십시오

        // 열 객체 선언
        HSSFCell cell = null;
        
        if (StringUtils.isNotEmpty (mergeCell)) {            // 셀 병합             CellRangeAddress callRangeAddress = new CellRangeAddress (0,0,0, cellNum); // 시작 행, 끝 행, 시작 시작 열, 끝 열             sheet.addMergedRegion (callRangeAddress);             cell = row.createCell (0);             cell.setCellValue (mergeCell);             cell.setCellStyle (style);             row = sheet.createRow (1);          // HSSFCell cell = null;             // 제목 만들기             for (int i = 0; i <title.length; i ++) {                 cell = row.createCell (i);                 cell.setCellValue (title [i]);












                cell.setCellStyle (스타일);
            }

            // 콘텐츠 생성
            for (int i = 0; i <values.length; i ++) {                 row = sheet.createRow (i + 2);                 for (int j = 0; j <values ​​[i] .length; j ++) {                     // 컨텐츠를 해당 컬럼 객체에 순서대로                     할당 row.createCell (j) .setCellValue (values ​​[i] [j]);                 }             }       } else {          // HSSFCell cell = null;            // Create title            for (int i = 0; i <title.length; i ++) {                cell = row.createCell (i);                cell.setCellValue (title [i]);                cell.setCellStyle (style);            }







         






           // Create content
           for (int i = 0; i <values.length; i ++) {                row = sheet.createRow (i + 1);                for (int j = 0; j <values ​​[i] .length; j ++) {                    // 컨텐츠를 해당 열 개체에 순서대로 할당합니다.                    row.createCell (j) .setCellValue (values ​​[i] [j]);                }            }       }         return wb;     } } 3. html 템플릿을 구성하여 내보낼 수 있습니다.






         




 

추천

출처blog.csdn.net/qq_39008613/article/details/104994921