봉봉의 개인 블로그
2017-11-03(엑셀 poi write 관련) 본문
Maven에서 poi 설정 및 자바 엑셀 파일 처리하기
POI Library를 이용한 Excel Write
1. 라이브러리 maven 설정
HSSF(xls) 엑셀파일을 생성하기 위해서는 poi라이브러리만 있으면 되지만 XSSF(xlsx)엑셀 파일을 생성하기 위해서는 poi-ooxml 라이브러리가 필요하다.
1 2 3 4 5 6 7 8 9 10 | <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.7</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.7</version> </dependency> | cs |
(CustomerExcelWriter Class)
실제 엑셀파일을 생성하는 주요 클래스
주요동작은 아래 작업을 통해서 필요한 만큼 Sheet,Row,Cell을 생성하여 FileOutputStream으로 저장처리 하면 된다.
*xsl : HSSFWorkbook 생성 -> HSSFSheet 생성 -> HSSFRow 생성 -> HSSFCell 생성
*xlsx : XSSFWorkbook 생성 -> XSSFSheet 생성 -> XSSFRow 생성 -> XSSFCell 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 | public void xlswiter(List<CustomerVo> list){ //워크북 생성 HSSFWorkbook workbook = new HSSFWorkbook(); //워크시트 생성 HSSFSheet sheet = workbook.createSheet(); //행 생성 HSSFRow row = sheet.createRow(0); //셀 생성 HSSFCell cell; //헤더 정보 구성 cell = row.createCell(0); cell.setCellValue("id"); cell = row.createCell(1); cell.setCellValue("name"); cell = row.createCell(2); cell.setCellValue("age"); cell = row.createCell(3); cell.setCellValue("email"); //리스트의 size 만큼 row를 생성 CustomerVo vo; for(int rowlistcount = 0 ; rowlistcount < list.size() ; rowlistcount++){ vo = list.get(rowlistcount); //행 생성 row = sheet.createRow(rowlistcount+1); cell = row.createCell(0); cell.setCellValue(vo.getCustId()); cell = row.createCell(1); cell.setCellValue(vo.getCustName); cell = row.createCell(2); cell.setCellValue(vo.getCustAge); cell = row.createCell(3); cell.setCellValue(vo.getCustEmail); } //입력된 내용 파일로 쓰기 File file = new File("C:\\excel\\testWrite.xls"); FileOutputStream fos = null; try{ fos = new FileOutputStream(file); workbook.write(fos); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally{ try{ if(workbook != null) workbook.close(); if(fos != null) fos.close(); }catch(IOException e){ e.printStackTrace(); } } } public void xlsxwiter(List<CustomerVo> list){ //워크북 생성 XSSFWorkbook workbook = new XSSFWorkbook(); //워크시트 생성 XSSFSheet sheet = workbook.createSheet(); //행 생성 XSSFRow row = sheet.createRow(0); //셀 생성 XSSFCell cell; //헤더 정보 구성 cell = row.createCell(0); cell.setCellValue("id"); cell = row.createCell(1); cell.setCellValue("name"); cell = row.createCell(2); cell.setCellValue("age"); cell = row.createCell(3); cell.setCellValue("email"); //리스트의 size 만큼 row를 생성 CustomerVo vo; for(int rowlistcount = 0 ; rowlistcount < list.size() ; rowlistcount++){ vo = list.get(rowlistcount); //행 생성 row = sheet.createRow(rowlistcount+1); cell = row.createCell(0); cell.setCellValue(vo.getCustId()); cell = row.createCell(1); cell.setCellValue(vo.getCustName); cell = row.createCell(2); cell.setCellValue(vo.getCustAge); cell = row.createCell(3); cell.setCellValue(vo.getCustEmail); } //입력된 내용 파일로 쓰기 File file = new File("C:\\excel\\testWrite.xls"); FileOutputStream fos = null; try{ fos = new FileOutputStream(file); workbook.write(fos); }catch(FileNotFoundException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }finally{ try{ if(workbook != null) workbook.close(); if(fos != null) fos.close(); }catch(IOException e){ e.printStackTrace(); } } } | cs |
이런식이라고 생각하면 되고
MainApplication Class
CustomerExcelWiter 를 호출하고 종료
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void main(String[] args){ //엑셀로 쓸 데이터 생성 List<CustomerVo> list = new ArrayList<CustomerVo>(); list.add(new CustomerVo("No.1","play1","21","no1@gmail.com")); list.add(new CustomerVo("No.2","play2","22","no2@gmail.com")); list.add(new CustomerVo("No.3","play3","23","no3@gmail.com")); list.add(new CustomerVo("No.4","play4","24","no4@gmail.com")); list.add(new CustomerVo("No.5","play5","25","no5@gmail.com")); CustomerExcelWriter excelWriter = new CustomerExcelWriter(); //xls 파일 쓰기 excelWriter.xlswiter(list); //xlsx 파일 쓰기 excelWriter.xlsxwiter(list); } | cs |
이런식과 같이 main 에서 호출해주면 된다.
*tip*
xls형식
* Microsoft Excel 97-2003 버전 사용되는 형식
* 최대 256 컬럼 , 65,536행 제한
* POI를 이용하여 데이터 접근 시 org.apache.poi.hssf 패키지 이용
* org.apache.poi.hssf.usermodel.HSSFWorkbook
* org.apache.poi.hssf.usermodel.HSSFSheet
* org.apache.poi.hssf.usermodel.HSSFRow
* org.apache.poi.hssf.usermodel.HSSFCell
xlsx형식
* Microsoft Excel 2007 이 후 버전 사용되는 형식
* 최대 16,384 컬럼 , 1,048,567행 제한
* POI를 이용하여 데이터 접근 시 org.apache.poi.xssf 패키지 이용
* org.apache.poi.hssf.usermodel.XSSFWorkbook
* org.apache.poi.hssf.usermodel.XSSFSheet
* org.apache.poi.hssf.usermodel.XSSFRow
* org.apache.poi.hssf.usermodel.XSSFCell
'입사후 공부한내용' 카테고리의 다른 글
2017-11-06(Javascript : window.open 속성 사용 방법) (0) | 2017.11.06 |
---|---|
2017-11-03(엑셀 poi read 관련) (0) | 2017.11.03 |
2017-11-03(ACS란 무엇인가) (0) | 2017.11.03 |
2017-11-02(Spring Boot에서 Redis 설정및 사용하여 방문자수 업데이트 만들기) (0) | 2017.11.02 |
2017-11-02(Redis) (0) | 2017.11.02 |