이번 포스팅은 엑셀규격에 데이터를 밀어넣는 작업을 진행해볼까 합니다. 엑셀 XLS,XLSX버전 모두 포스팅 하도록 하겠습니다. ㅎㅎ 엑셀 2003 -최대 입력할수 있는 데이터는가로 256컬럼, 세로 65,536라인입니다. 엑셀 2007 - 최대 입력가능 데이터는 가로 16,384 세로 1,048,576 라인입니다. 엑셀을 쓰기위해 우선적으로 진행해야할 ..
지난 포스팅은 MAP객체의 KEY값에 관계없이 출력하는 샘플코드를 작성해보았습니다. 이번에는 OBJECT 타입에 상관없이 DTO/VO 상관없이 한번에 읽어서 읽어오는 코드를 작성해 볼까 합니다. 테스트를 위해서 임의의 object 클래스를 생성해보도록 하겠습니다. DTO.javapublic class DTO { private int seq; priva..
웹개발을 하다보면 데이터들을 VO객체에 담거나 혹은 MAP객체에 key / value세팅을 하여 데이터를 뽑아오는 작업을 종종 하게됩니다. 하나의 map객체의key값이 고정적으로 있던가변적으로 있던... 결국 get을이용해서 key값을 일일이 지정해주기에는 상단히 코드도 길어지고지저분해지기 마련이죠.. 예를 하나 들어보도록 하겠습니다. key값이 key0..
이번 포스팅은 엑셀규격에 데이터를 밀어넣는 작업을 진행해볼까 합니다.
엑셀 XLS,XLSX 버전 모두 포스팅 하도록 하겠습니다. ㅎㅎ
엑셀 2003 - 최대 입력할수 있는 데이터는 가로 256컬럼, 세로 65,536라인입니다.
엑셀 2007 - 최대 입력가능 데이터는 가로 16,384 세로 1,048,576 라인입니다.
엑셀을 쓰기위해 우선적으로 진행해야할 작업은 POI라는라이브러리를 다운로드 받는 일인대요
http://poi.apache.org/download.html
위 사이트 접속후 POI 라이브러리를 다운로드 받으시면 되겠습니다.
오늘날짜 기준으로 3.11은 BETA 버전이므로 3.10버전을 받도록 하겠습니다.
다운로드를 받으셨으면
압축해제후 다음 라이브러리를 이클립스의 lib 폴더에 넣고
작업을 진행해보도록 하겠습니다.
XLS 파일만 작성하실 분들은 상단 라이브러리만 IMPORT해주시면 되겠습니다.
추가로 2007버전인 XLSX파일을 생성하시고자 하실경우
"ooxml-lib" 디렉토리에 있는 라이브러리들을 추가적으로 IMPORT 해주셔야 합니다.
그럼 샘플 코드작성을 위해 임의의 시나리오를 작성해보겠습니다.
가상의 DB데이터를 담은 LIST객체의 데이터를 엑셀규격에 맞추어서 넣은다음 파일로 작성한다
그럼 위 시나리오에 맞추어 다음 코드를 보시겠습니다.
DB데이터를 담는 객체는 map 타입으로 진행을 하도록 하겠습니다.
같은 코드를 2003,2007 버전으로 나누어서 작성하도록 하겠습니다.
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 | //임의의 VO가 되주는 MAP 객체 Map<String,Object>map= null ; //가상 DB조회후 목록을 담을 LIST객체 ArrayList<Map<String,Object>> list= new ArrayList<Map<String,Object>>(); ArrayList<String> columnList= new ArrayList<String>(); //DB조회후 데이터를 담았다는 가상의 데이터 for ( int i= 0 ;i< 10 ;i++){ map= new HashMap<String,Object>(); map.put( "seq" , i+ 1 ); map.put( "title" , "제목이다" +i); map.put( "content" , "내용입니다" +i); list.add(map); } //MAP의 KEY값을 담기위함 if (list != null &&list.size() > 0 ){ //LIST의 첫번째 데이터의 KEY값만 알면 되므로 Map<String,Object> m=list.get( 0 ); //MAP의 KEY값을 columnList객체에 ADD for (String k : m.keySet()){ columnList.add(k); } } //1차로 workbook을 생성 HSSFWorkbook workbook= new HSSFWorkbook(); //2차는 sheet생성 HSSFSheet sheet=workbook.createSheet( "시트명" ); //엑셀의 행 HSSFRow row= null ; //엑셀의 셀 HSSFCell cell= null ; //임의의 DB데이터 조회 if (list != null &&list.size() > 0 ){ int i= 0 ; for (Map<String,Object> mapobject : list){ // 시트에 하나의 행을 생성한다(i 값이 0이면 첫번째 줄에 해당) row=sheet.createRow(( short )i); i++; if (columnList != null &&columnList.size() > 0 ){ for ( int j= 0 ;j<columnList.size();j++){ //생성된 row에 컬럼을 생성한다 cell=row.createCell(j); //map에 담긴 데이터를 가져와 cell에 add한다 cell.setCellValue(String.valueOf(mapobject.get(columnList.get(j)))); } } } } FileOutputStream fileoutputstream= new FileOutputStream( "D:\\roqkffhwk.xls" ); //파일을 쓴다 workbook.write(fileoutputstream); //필수로 닫아주어야함 fileoutputstream.close(); System.out.println( "엑셀파일생성성공" ); |
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 | //임의의 VO가 되주는 MAP 객체 Map<String,Object>map= null ; //가상 DB조회후 목록을 담을 LIST객체 ArrayList<Map<String,Object>> list= new ArrayList<Map<String,Object>>(); ArrayList<String> columnList= new ArrayList<String>(); //DB조회후 데이터를 담았다는 가상의 데이터 for ( int i= 0 ;i< 10 ;i++){ map= new HashMap<String,Object>(); map.put( "seq" , i+ 1 ); map.put( "title" , "제목이다" +i); map.put( "content" , "내용입니다" +i); list.add(map); } //MAP의 KEY값을 담기위함 if (list != null &&list.size() > 0 ){ //LIST의 첫번째 데이터의 KEY값만 알면 되므로 Map<String,Object>m=list.get( 0 ); //MAP의 KEY값을 columnList객체에 ADD for (String k : m.keySet()){ columnList.add(k); } } //1차로 workbook을 생성 XSSFWorkbook workbook= new XSSFWorkbook(); //2차는 sheet생성 XSSFSheet sheet=workbook.createSheet( "시트명" ); //엑셀의 행 XSSFRow row= null ; //엑셀의 셀 XSSFCell cell= null ; //임의의 DB데이터 조회 if (list != null &&list.size() > 0 ){ int i= 0 ; for (Map<String,Object>mapobject : list){ // 시트에 하나의 행을 생성한다(i 값이 0이면 첫번째 줄에 해당) row=sheet.createRow(( short )i); i++; if (columnList != null &&columnList.size() > 0 ){ for ( int j= 0 ;j<columnList.size();j++){ //생성된 row에 컬럼을 생성한다 cell=row.createCell(j); //map에 담긴 데이터를 가져와 cell에 add한다 cell.setCellValue(String.valueOf(mapobject.get(columnList.get(j)))); } } } } FileOutputStream fileoutputstream= new FileOutputStream( "D:\\roqkffhwk2.xlsx" ); //파일을 쓴다 workbook.write(fileoutputstream); //필수로 닫아주어야함 fileoutputstream.close(); System.out.println( "엑셀파일생성성공" ); |
xlsx 코드는 거의 동일하고 사용 API만 변경되었을 뿐입니다.
기존 "HSSFXXX" 시작된 API들을 "XSSFXXX" 로 변경되고
추가로 파일명의 확장자를 "파일명.xlsx"으로 변경만 해주시면 됩니다.
Map타입으로 데이터를 담아서 엑셀에 쓰기작업을 진행하였으나
dto,vo 객체를 이용하여 쓰는것 또한 가능합니다.
2014/10/07 - [코드저장소/java] - Map객체의 key값을 읽어서 value값 한번에 추출하기
2014/10/07 - [코드저장소/java] - DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기
각 링크를 참고하여 같이 적용하시면 되실거 같네요
한번 실행을 해보도록 하겠습니다.(2003,2007 동일결과)
위와같이 console에 "엑셀파일생성"이라는 문구가 출력되었습니다.
그렇다면 정상적으로 생성이 되었나 파일을 확인하도록 하겠습니다.
정상적으로 종류별로 모든 데이터가 엑셀에 생성이 되었습니다 ^^
엑셀파일 읽기관련 포스팅은 하단 글을 참조하세요
↓↓↓↓↓↓↓
2014/10/07 - [코드저장소/java] - 자바 POI를 이용한 엑셀(xls,xlsx)에 들어있는 데이터들 읽어오기
by 개발로짜
자바 다운로드 유틸을 만들어서 웹서버에 등록되있는 파일을 다운로드 하자 (5) | 2014.10.07 |
---|---|
자바 POI를 이용한 엑셀(xls,xlsx)에 들어있는 데이터들 읽어오기 (8) | 2014.10.07 |
DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기 (0) | 2014.10.07 |
Map객체의 key값을 읽어서 value값 한번에 추출하기 (0) | 2014.10.07 |
JSTL의 c:forTokens을 이용하여 확장자명 찾기 (0) | 2014.10.06 |
지난 포스팅은 MAP객체의 KEY값에 관계없이 출력하는 샘플코드를 작성해보았습니다.
이번에는 OBJECT 타입에 상관없이 DTO/VO 상관없이 한번에 읽어서 읽어오는 코드를 작성해 볼까 합니다.
테스트를 위해서 임의의 object 클래스를 생성해보도록 하겠습니다.
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 | public class DTO { private int seq; private String title; private String content; private Date createdate; public int getSeq() { return seq; } public void setSeq( int seq) { this .seq = seq; } public String getTitle() { return title; } public void setTitle(String title) { this .title = title; } public String getContent() { return content; } public void setContent(String content) { this .content = content; } public Date getCreatedate() { return createdate; } public void setCreatedate(Date createdate) { this .createdate = createdate; } } |
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 | public class VO { private String titlevo; private String contentvo; private int hitnumvo; public String getTitlevo() { return titlevo; } public void setTitlevo(String titlevo) { this .titlevo = titlevo; } public String getContentvo() { return contentvo; } public void setContentvo(String contentvo) { this .contentvo = contentvo; } public int getHitnumvo() { return hitnumvo; } public void setHitnumvo( int hitnumvo) { this .hitnumvo = hitnumvo; } } |
테스트를 위하여 2개의 클래스를 생성하였습니다.
웹으로 이야기하자면 DTO 혹은 VO라고 하죠
각 테스트 코드는 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public static void main(String ar[]){ DTO dto= new DTO(); dto.setSeq( 1 ); dto.setTitle( "제목" ); dto.setCreatedate( new Date()); dto.setContent( "내용내용" ); try { Object obj=dto; for (Field field : obj.getClass().getDeclaredFields()){ field.setAccessible( true ); Object value=field.get(obj); System.out.println(field.getName()+ "," +value); } } catch (Exception e){ e.printStackTrace(); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public static void main(String ar[]){ VO vo= new VO(); vo.setHitnumvo( 10 ); vo.setContentvo( "VO 컨텐츠 내용입니다." ); vo.setTitlevo( "VO 타이틀입니다." ); try { Object obj=vo; for (Field field : obj.getClass().getDeclaredFields()){ field.setAccessible( true ); Object value=field.get(obj); System.out.println(field.getName()+ "," +value); } } catch (Exception e){ e.printStackTrace(); } } |
Map객체 key/value 한방에 get해오기와 마찬가지로
정상적으로 모든 변수와 그에 속하는 값들을 읽어왔네요~
Map 객체 한번에 읽어오는것은 하단 포스팅을 참고하시면 되시겠습니다 ^^
↓↓↓↓
2014/10/07 - [코드저장소/java] - Map객체의 key값을 읽어서 value값 한번에 추출하기
by 개발로짜
자바 POI를 이용한 엑셀(xls,xlsx)에 들어있는 데이터들 읽어오기 (8) | 2014.10.07 |
---|---|
POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기 (1) | 2014.10.07 |
Map객체의 key값을 읽어서 value값 한번에 추출하기 (0) | 2014.10.07 |
JSTL의 c:forTokens을 이용하여 확장자명 찾기 (0) | 2014.10.06 |
JSON 라이브러리를 이용하여 object생성과 문자열을 object형으로 변환해보기 (0) | 2014.10.06 |
웹개발을 하다보면 데이터들을 VO객체에 담거나 혹은 MAP객체에 key / value 세팅을 하여
데이터를 뽑아오는 작업을 종종 하게됩니다.
하나의 map객체의 key값이 고정적으로 있던 가변적으로 있던...
결국 get을이용해서 key값을 일일이 지정해주기에는
상단히 코드도 길어지고 지저분해지기 마련이죠..
예를 하나 들어보도록 하겠습니다.
key값이 key0,key1,key2 이 3가지의 key를 가져오기 위해서는
1 2 3 | map.get( "key0" ); map.get( "key1" ); map.get( "key2" ); |
위처럼 하나하나 지정을 해줍니다.
그래서 이번포스팅은 하나의 코드를 이용하여
MAP의 들어있는 데이터들을 한방에 읽어보는 코드를 작성해볼까 합니다.
코드는 간결하게 작성해보았습니다.
1 2 3 4 5 6 7 8 9 10 11 | public static void main(String ar[]){ Map<string, object> mapobject= new HashMap<string, object>(); //임의로 여러개의 KEY값을 MAP 객체에 PUT for ( int i= 0 ;i< 3 ;i++){ mapobject.put( "key" +i, i+ 24 ); } //MAP의 KEY값을 이용하여 VALUE값 가져오기 for (String mapkey : mapobject.keySet()){ System.out.println( "key:" +mapkey+ ",value:" +mapobject.get(mapkey)); } } |
코드가 참 간결합니다 ㅎㅎ
그럼 이번에는 실행결과를 보도록 하겠습니다.
위의 코드를 이용하시면 map의 key갯수에 상관없이 출력이 가능하게 됩니다^^
Object(DTO,VO) 한번에 읽기는 하단 포스팅을 참고해주세요
↓↓↓↓
2014/10/07 - [코드저장소/java] - DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기
by 개발로짜
POI라이브러리를 이용하여 엑셀파일(xls,xlsx) 에 데이터 넣어서 파일로 만들기 (1) | 2014.10.07 |
---|---|
DTO,VO에 정의되어있는 변수명 및 갯수에 관계없이 변수명과 value값 한방에 가져오기 (0) | 2014.10.07 |
JSTL의 c:forTokens을 이용하여 확장자명 찾기 (0) | 2014.10.06 |
JSON 라이브러리를 이용하여 object생성과 문자열을 object형으로 변환해보기 (0) | 2014.10.06 |
ImageIO를 이용하여 자바 썸네일 이미지 생성코드 구현하기 (1) | 2014.10.06 |
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.