강좌 & 팁
글 수 2,412
2012.10.27 15:26:40 (*.52.177.29)
51972
저번 시간에는 엑셀 파일 쓰기에 대해서 해봤습니다.
저번시간 내용은 아래와 같습니다.
[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.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class ExcelReadSample { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ExcelReadSample sample = new ExcelReadSample(); try { sample.excelRead(new File("D:\\ExcelWriteSample.xls")); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @param file * @throws IOException */ public void excelRead(File file) throws IOException { // map의 key정의 String[] keys = { "name", "addr", "tel", "etc" }; Workbook w = null; try { w = Workbook.getWorkbook(file); // 첫번째 엑셀 시트를 가져옴. Sheet sheet = w.getSheet(0); // 읽어들인 데이터를 저장 List<Map<String, Object>> data = new ArrayList<Map<String, Object>>(); // 한 행을 저장 Map<String, Object> map = null; // 시트의 행 사이즈 만큼 읽어옴. for (int j = 0; j < sheet.getRows(); j++) { map = new HashMap<String, Object>(); // 열 사이즈 만큼 읽어옴. for (int i = 0; i < sheet.getColumns(); i++) { // 한 셀을 읽어옴. Cell cell = sheet.getCell(i, j); // 셀타입 CellType type = cell.getType(); // 셀타입이 문자열 if (type == CellType.LABEL) { System.out.println("문자열 입니다. " + cell.getContents()); } // 셀타입이 숫자 if (type == CellType.NUMBER) { System.out.println("숫자 입니다. " + cell.getContents()); } // 한개의 셀 데이터 map.put(keys[i], cell.getContents()); } data.add(map); } // 읽어 들인 데이터 출력 for (Map<String, Object> temp : data) { System.out.println(temp); } } catch (BiffException e) { e.printStackTrace(); } } }
cell.getType()이라는 것으로 셀의 형식이 문자열인지 숫자인지, 또는 날짜형식인지 등등 을 알수 있습니다.
저는 엑셀파일을 만들때 문자열로만 만들었기 때문에 굳이 비교를 하지 않아도 되지만 샘플로 이런 것도 있다는 걸
보여주기 위해 한번 넣어 봤습니다.
숫자 형식으로 쓸려면 엑셀파일을 만들때 아래와 같은 형식으로 만들면 엑셀에서 숫자로 인식합니다.
jxl.write.Number num = new jxl.write.Number(열, 행, 숫자값);
[실행결과]
원래는 파일 쓰기 할때 여러가지 설명을 했어야 하는데.... 급하게 만드느라 설명이 별로 없었습니다.
다음 시간에 좀더 양식을 갖춘 엑셀파일 만들어 보도록 하겠습니다.
감사합니다.
[튜토리얼]http://www.andykhan.com/jexcelapi/tutorial.html