개발/JAVA
JAVA Excel 파일 write - WritableWorkbook
LukeHan1128
2021. 8. 5. 20:00
반응형
JAVA 프로그램 개발 중 Excel Export 기능 구현이 필요하였다.
대부분 POI 를 사용하여 구현하여 진행하려 하였으나 용량이 180Mb 정도 되었다.
개발하는 프로그램 용량이 10Mb 가 안되는데.. 다른 대안이 필요하였다.
jxl (WritableWorkbook) jar 파일 다운로드 : http://www.java2s.com/Code/Jar/j/Downloadjxl26jar.htm
// create excel and sheet
WritableWorkbook workbook = Workbook.createWorkbook(new File(path));
WritableSheet sheet1 = workbook.createSheet("시트1",0);
WritableSheet sheet2 = workbook.createSheet("시트2",1);
// header style
WritableFont headerStyle = new WritableFont(WritableFont.TAHOMA, 11, WritableFont.BOLD, false);
WritableCellFormat headerFormat = new WritableCellFormat(headerStyle);
headerFormat.setBackground(Colour.GOLD);
headerFormat.setBorder(jxl.format.Border.ALL, BorderLineStyle.THIN);
headerFormat.setAlignment(Alignment.CENTRE);
// cell style
WritableFont cellStyle = new WritableFont(WritableFont.TAHOMA, 11, WritableFont.NO_BOLD, false);
WritableCellFormat cellFormat = new WritableCellFormat(cellStyle);
cellFormat.setVerticalAlignment(jxl.format.VerticalAlignment.TOP);
cellFormat.setBorder(jxl.format.Border.ALL, BorderLineStyle.THIN);
// add data - header
sheet1.addCell(new jxl.write.Label(0, 0, "No", headerFormat));
sheet1.addCell(new jxl.write.Label(1, 0, "문서명", headerFormat));
sheet1.addCell(new jxl.write.Label(2, 0, "설명", headerFormat));
// add data - cell
sheet1.addCell(new jxl.write.Label(0, 1, "1", cellFormat));
sheet1.addCell(new jxl.write.Label(1, 1, "예제 문서", cellFormat));
sheet1.mergeCells(1, 1, 1, 2); // = (시작셀x , 시작셀y, 종료셀x, 종료셀y)
sheet1.addCell(new jxl.write.Label(2, 1, "예제로 활용하기 위한 문서", cellFormat));
// set width height
sheet1.setRowView(0,100);
sheet1.setColumView(0,20);
sheet1.setColumView(1,20);
// add hyper link
sheet2.addHyperlink(new WritableHyperlink(
0 // 링크 적용할 셀의 x좌표
, row // 링크 적용할 셀의 y좌표
, str // 링크 내용
, workbook.getSheet(str) // 이동할 시트
, 0 // 이동할 시트의 x좌표
, 0 // 이동할 시트의 y좌표
));
// write and close
workbook.write();
workbook.close();
반응형