Excel로 데이터 내보내기에 POI를 사용하여 봄 부팅

  프로젝트 봄 부팅에 자바 기술에 대한 자주 만남 수출 Excel 스프레드 시트의 요구에 데이터 및 POI가 엑셀 스프레드 시트 API를 제공 운영하고, POI 문서의 여러 종류의 인터페이스 동작을 제공하기위한의, 그러나에 대한 Excel 스프레드 시트 작업은 의심 할 여지없이 가장 강력하다.

  1.POI 프로필

    아파치 POI는 자바 무료 및 오픈 소스 크로스 플랫폼 자바 API로 작성, 아파치 POI는 마이크로 소프트 오피스에 자바 프로그램을 제공하는 API (등 엑셀, 워드, 파워 포인트, Visio를, 엑셀의 주요 성과) 형식의 파일 읽기 및 쓰기 기능 POI는 퍼지 구현의 간단한 버전을 의미하는 "불쌍한 난독 구현"글자의 첫 글자입니다.

   POI 구조 :

HSSF - 읽기 및 쓰기 마이크로 소프트 엑셀 XLS 파일 형식 기능을 제공합니다.
XSSF는 - Microsoft Excel에서 OOXML XLSX 형식의 파일을 읽고 쓸 수있는 기능을 제공합니다.
HWPF는 - 마이크로 소프트 워드 DOC97 형식의 파일을 읽고 쓸 수있는 기능을 제공합니다.
XWPF - 읽기 및 쓰기 마이크로 소프트 워드 파일 포맷 기능 DOC2003 제공합니다.
HSLF - 읽기 및 쓰기 마이크로 소프트 파워 포인트 파일 포맷 기능을 제공합니다.
HDGF은 - Microsoft Visio에 파일 형식의 읽기 기능을 제공합니다.
HPBF은 - Microsoft Publisher에서 파일 형식의 기능을 읽기 제공합니다.
HSMF은 - 마이크로 소프트 아웃룩 파일 포맷 읽기 기능 제공합니다.

  엑셀의 POI 작업을 사용하기 때문에, 그래서 일반적인 클래스 HSSF에 대해 말해 :

클래스 설명
HSSFWorkbook 엑셀 문서 객체
HSSFSheet 엑셀 양식
HSSFRow 엑셀 행
HSSFCell 엑셀 격자 단위
HSSFFont 엑셀 글꼴
 격자 세포 HSSFDataFormat의 날짜 형식
HSSFHeader 엑셀 시트 헤더를 문서화
HSSFFooter 엑셀 시트 바닥 글을 문서화
HSSFCellStyle 격자 셀 스타일
HSSFDateUtil 일
HSSFPrintSetup 인쇄
 HSSFErrorConstants 오류 정보 테이블            

 

  프로젝트 2. 가져 오기 의존 POI

 

<- HTTPS :! // mvnrepository.com/artifact/org.apache.poi/poi ->
        <의존성>
            <의 groupId> org.apache.poi </의 groupId>
            <artifactId를> POI </ artifactId를>
            <버전> 4.1 . 1 </ 버전>
        </ 의존성>

  3.controller 층

( "/ 내보내기"@GetMapping )
     공개 ResponseEntity < 바이트 []> exportEmp을 () {
        목록 목록 = 수출되는 모든 데이터에 대한 데이터베이스 쿼리 ,
         반환 EmpUtils.exportEmp (에는 EmployeeList);
    }

  먼저, 특정 데이터에 대한 데이터베이스 쿼리를 엑셀, 컨트롤러 레이어의 리턴 값 ResponseEntity로 내보내 내지 < 바이트 [] ".

  POI의 Excel 스프레드 시트 4.Java 사용의 건설

 

공공  클래스 EmpUtils {

    공용  정적 ResponseEntity < 바이트 []> exportEmp (목록 <직원> 에는 EmployeeList는) {
         // 1. Excel 문서 작성 
        HSSFWorkbook HSSFWorkbook는 = 새로운 새 HSSFWorkbook을 ();
         // 2. 문서 개요 작성 
        hssfWorkbook.createInformationProperties을 ();
         // 3.. 취득 및 구성 문서 요약 정보 
        DocumentSummaryInformation DOCINFO = hssfWorkbook.getDocumentSummaryInformation ();
         // 문서 카테고리 
        docInfo.setCategory ( "XXX 정보" );
         // 설명서 관리자 
        docInfo.setManager ( '희망' );
         // 문서는 회사에 속한
        docInfo.setCompany ( "XXXX" );
         // 문제의 
        docInfo.setApplicationVersion (1 );
         // 4. GET 문서 요약 정보 
        SummaryInformation SummaryInformation = hssfWorkbook.getSummaryInformation ();
         // 문서 제목 
        summaryInformation.setAuthor ( "hopec" );
         // 문서 작성 시간 
        summaryInformation.setCreateDateTime ( 새 새 날짜 ());
         // 문서 노트 
        summaryInformation.setComments ( "문서주의 사항" );
         // 5. 스타일을 만들
         // 스타일의 헤더 행을 작성 
        HSSFCellStyle headerStyle =hssfWorkbook.createCellStyle ();
         // 설정 한 스타일 패턴 색 노란색
 //         headerStyle.setFillForegroundColor (IndexedColors.GREEN.index); // 설정 컬러 패턴
 //         headerStyle.setFillBackgroundColor (IndexedColors.RED.index); // 설정 배경 색상 패턴 
        headerStyle.setFillForegroundColor (IndexedColors.YELLOW.index);
         // 세트 해치 패턴 
        headerStyle.setFillPattern (FillPatternType.SOLID_FOREGROUND는);
         // 관련 날짜 스타일 설정 
        HSSFCellStyle dateCellStyle = hssfWorkbook.createCellStyle을 ();
         // 곳 m / D / YY YYYY-MM-DD 당량
        dateCellStyle.setDataFormat (HSSFDataFormat.getBuiltinFormat ( "m / D / YY ' ));
        시트 HSSFSheet = hssfWorkbook.createSheet ( "XXX 정보 테이블" );
         // 각 열의 폭 설정 
        sheet.setColumnWidth (256 * 0,5 );
        sheet.setColumnWidth ( 1,12 * 256 );
        sheet.setColumnWidth ( 2,10 * 256 );
        sheet.setColumnWidth ( 3,5- * 256 );
        sheet.setColumnWidth ( 4,16 * 256 );
        sheet.setColumnWidth ( 5,20 * 256 );
        sheet.setColumnWidth ( 6,10 * 256 );
        sheet.setColumnWidth ( 7,10 * 256 );
        sheet.setColumnWidth ( (8, 18) * 256 );
        sheet.setColumnWidth ( 9, 12 * 256 );
         // 6. 헤더 행 만들기 
        HSSFRow R0 = sheet.createRow (0 );
        HSSFCell C0 = r0.createCell (0 );
        c0.setCellValue ( "아니오" );
        c0.setCellStyle (headerStyle);
        HSSFCell C1 = r0.createCell (1 );
        c1.setCellStyle (headerStyle);
        c1.setCellValue ( "姓名" );
        HSSFCell C2 = r0.createCell (2 );
        c2.setCellStyle (headerStyle);
        c2.setCellValue ( "工号" );
        HSSFCell C3 = r0.createCell (3 );
        c3.setCellStyle (headerStyle);
        c3.setCellValue ( "성" );
        HSSFCell C4 = r0.createCell (4 );
        c4.setCellStyle (headerStyle);
        c4.setCellValue ( "생년월일" );
        HSSFCell C5 = r0.createCell (5 );
        c5.setCellStyle (headerStyle);
        c5.setCellValue ( "ID 번호" );
        HSSFCell C6 = r0.createCell (6 );
        c6.setCellStyle (headerStyle);
        c6.setCellValue ( "결혼 상태" );
        HSSFCell C7 = r0.createCell (7 );
        c7.setCellStyle (headerStyle);
        c7.setCellValue ( "국가" );
        HSSFCell C8 = r0.createCell (8 );
        c8.setCellStyle (headerStyle);
        c8.setCellValue ( "원산지" );
        HSSFCell C9 = r0.createCell (9 );
        c9.setCellStyle (headerStyle);
        c9.setCellValue ( "정치적 풍경" );
        HSSFCell C10 = r0.createCell (10 );
      
        위한 ( INT I = 0; I <employeeList.size (); I ++ ) {
            직원 직원 = employeeList.get을 (I);
            HSSFRow 행 = sheet.createRow는 (i + 1 );
            row.createCell ( 0 ) .setCellValue (employee.getId ());
            row.createCell ( 1 ) .setCellValue (employee.getName ());
            row.createCell ( 2 ) .setCellValue (employee.getWorkID ());
            row.createCell ( 3 ) .setCellValue (employee.getGender ());
            CELL4 HSSFCell = row.createCell (4. )
          // 날짜 별도의 스타일 설정 
            cell4.setCellStyle (dateCellStyle를);
            cell4.setCellValue (employee.getBirthday ());
            row.createCell ( 5 ) .setCellValue (employee.getIdCard ());
            row.createCell ( 6 ) .setCellValue (employee.getWedlock ());
            row.createCell ( 7 ) .setCellValue (. employee.getNation () getName ());
            row.createCell ( 8 ) .setCellValue (employee.getNativePlace ());
            row.createCell ( 9 ) .setCellValue (employee.getPoliticsstatus () getName ().);
        }
        를 ByteArrayOutputStream 스트림 = 를 ByteArrayOutputStream ();
        헤더 HttpHeaders = 새로운 새로운 HttpHeaders ();
         은 try {
             // 데이터 테이블 파생 왜곡 방지 트랜스 코딩 몇 중국어 단어 
            headers.setContentDispositionFormData를 ( "첨부 파일" ,
                     새로운 새로운 문자열 ( "데이터 테이블 .XLS".getBytes를 ( "UTF- . 8 ")의"ISO-8859 " ));
            headers.setContentType (MediaType.APPLICATION_OCTET_STREAM);
            hssfWorkbook.write (흐름);
        } 캐치 (IOException이 전자) {
            e.printStackTrace ();
        }
        돌아가  새로운 <ResponseEntity를 바이트 []> (stream.toByteArray (), 헤더 HttpStatus.CREATED);
    }
}
            

 

  페이지 호출

exportEmp () {
                 다음은이 . $ '계속 여부,이 수출 직원이 데이터?'는을 (확인, '팁' , {
                    confirmButtonText : '확인'을 ,
                    cancelButtonText은 : '취소'를 ,
                    입력 : '경고' 
                .}) 다음 (() => {
                    window.open ( '/ 직원 / 기본 / 내보내기', '_ 부모 )
                }). 캐치 (() => {
                     . $ 메시지 ({
                        입력 : '정보'를 ,
                        메시지 : '취소 수출'
                    });
                });
            },

  인터페이스의 배경은 어디 / 직원 / 기본 / 수출 restfulAPI 주소.

추천

출처www.cnblogs.com/hopeofthevillage/p/12099807.html