강좌 & 팁
글 수 2,412
2012.11.03 16:23:00 (*.52.177.29)
44370
저번저번 시간에 [Java]Execl파일 만들기를 했었는데 거기에 좀더 보태서 많이는 아니지만
좀 양식을 더해서 엑셀파일을 만들어 보도록 하겠습니다.
1탄은 아래의 URL을 참조
[Java]Execl파일 만들기 : http://forum.falinux.com/zbxe/?document_srl=575169
아래의 왼쪽그림은 엑셀 파일을 단순히 출력만 했던걸 오른쪽의 처럼 컬럼와 크기를 설정해 출력하도록 해보겠습니다.
[샘플소스]
import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.Colour; import jxl.format.Font; import jxl.format.UnderlineStyle; import jxl.format.VerticalAlignment; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class ExcelWriteSample { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ExcelWriteSample sample = new ExcelWriteSample(); try { sample.excelWrite(new File("D:\\ExcelWriteSample.xls"), sample.getData()); } catch (WriteException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @param file * @param data * @throws IOException * @throws WriteException */ public void excelWrite(File file, List<Map<String, Object>> data) throws IOException, WriteException { // WorkBook 생성 WritableWorkbook wb = Workbook.createWorkbook(file); // WorkSheet 생성 WritableSheet sh = wb.createSheet("테스트", 0); // 열넓이 설정 (열 위치, 넓이) sh.setColumnView(0, 10); sh.setColumnView(1, 20); sh.setColumnView(2, 20); sh.setColumnView(3, 20); // 폰트 포맷 WritableFont arial20font = new WritableFont(WritableFont.ARIAL, // 폰트이름 20, // 폰트 크기 WritableFont.BOLD, // 폰트 두께 false, // 이탤릭 사용 유무 UnderlineStyle.DOUBLE, // 밑줄 스타일 Colour.BLACK); // 폰트색 // 제목 형식 WritableCellFormat titleFormat = new WritableCellFormat(arial20font); // 제목 좌우 정렬 titleFormat.setAlignment(Alignment.CENTRE); // 제목 상하 정렬 titleFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 셀 병합 // 제목 셀 병합 // sh.mergeCells(col1, row1, col2, row2) sh.mergeCells(0, 0, 3, 0); // 제목 행 높이 sh.setRowView(0, 800); // 폰트 포맷 WritableFont heard14font = new WritableFont(WritableFont.ARIAL, // 폰트이름 14, // 폰트 크기 WritableFont.BOLD, // 폰트 두께 false, // 이탤릭 사용 유무 UnderlineStyle.NO_UNDERLINE, // 밑줄 스타일 Colour.BLACK); // 폰트색 // 헤더 형식 WritableCellFormat headFormat = new WritableCellFormat(heard14font); // 헤더 좌우 정렬 headFormat.setAlignment(Alignment.CENTRE); // 헤더 상하 정렬 headFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 헤더 테두리 headFormat.setBorder(Border.ALL, BorderLineStyle.THIN); // 백그라운드 색 headFormat.setBackground(jxl.format.Colour.GRAY_25); // 셀형식 WritableCellFormat textFormat = new WritableCellFormat(); // 셀 좌우 정렬 textFormat.setAlignment(Alignment.CENTRE); // 셀 상하 정렬 textFormat.setVerticalAlignment(VerticalAlignment.CENTRE); // 테두리 textFormat.setBorder(Border.ALL, BorderLineStyle.THIN); int titleRow = 0; int row = 1; // 헤더 sh.setRowView(row, 350); Label label = new jxl.write.Label(0, titleRow, "주 소 록", titleFormat); sh.addCell(label); label = new jxl.write.Label(0, row, "이름", headFormat); sh.addCell(label); label = new jxl.write.Label(1, row, "주소", headFormat); sh.addCell(label); label = new jxl.write.Label(2, row, "전화번호", headFormat); sh.addCell(label); label = new jxl.write.Label(3, row, "비고", headFormat); sh.addCell(label); row++; for (Map<String, Object> tem : data) { // 행 높이 sh.setRowView(row, 300); // 이름 label = new jxl.write.Label(0, row, (String) tem.get("name"), textFormat); sh.addCell(label); // 주소 label = new jxl.write.Label(1, row, (String) tem.get("addr"), textFormat); sh.addCell(label); // 전화번호 label = new jxl.write.Label(2, row, (String) tem.get("tel"), textFormat); sh.addCell(label); // 비고 label = new jxl.write.Label(3, row, (String) tem.get("etc"), textFormat); sh.addCell(label); row++; } // WorkSheet 쓰기 wb.write(); // WorkSheet 닫기 wb.close(); } /** * 출력할 데이터 * * @return */ public List<Map<String, Object>> getData() { List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "이기자"); map.put("addr", "서울시 강북"); map.put("tel", "010-XXXX-XXXX"); map.put("etc", ""); data.add(map); map = new HashMap<String, Object>(); map.put("name", "김철순"); map.put("addr", "서울시 강남"); map.put("tel", "010-XXXX-XXXX"); map.put("etc", ""); data.add(map); map = new HashMap<String, Object>(); map.put("name", "박순심"); map.put("addr", "서울시 서초"); map.put("tel", "010-XXXX-XXXX"); map.put("etc", ""); data.add(map); map = new HashMap<String, Object>(); map.put("name", "강기남"); map.put("addr", "서울시 송파"); map.put("tel", "010-XXXX-XXXX"); map.put("etc", ""); data.add(map); return data; } }
커맨트에 대부분 설명이 달려 있기때문에 커맨트를 참조하세요.
폰트는 WritableFont.ARIAL와 WritableFont.TAHOMA, WritableFont.TIMES만 있는것 같습니다.
그외는 없기때문에 지원을 안하는것 같습니다.
소스 내용이 그렇게 어렵지 않으니 소스내용을 이해하면 쉽게 활용 할 수 있을꺼라 혼자 생각해봅니다. ^^;
감사합니다.