프로젝트 봄 부팅에 자바 기술에 대한 자주 만남 수출 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 주소.