POI 샘플소스
jsonObject
클라이언트에서 ajax로 요청했을 때 자료를 손쉽게 파싱하기 위해서 json으로 클라이언트에 던져줄 때가 편할 때가 있습니다. 그래서 손쉽게 json으로 변환하는 라이브러리가 있습니다.
http://json-lib.sourceforge.net/
여기보면 json-lib라는 놈이 있는데 json으로 손쉽게 변환해주는 라이브러리입니다.
이것들이 필요하다더군요. 위에 4개는 apache에 가면 있구요. ezmorph는 구글링해서 찾아서 받으세요.
그리고 JSON-LIB인 json-lib-2.2.1-jdk15.jar가 필요합니다.
사용법은 매우 간단합니다.
[code]
public class JsonTest {
@Test
public void Bean2Json()
{
MyBean myBean1 = new MyBean();
myBean1.setId(1);
myBean1.setName("mudchobo");
MyBean myBean2 = new MyBean();
myBean2.setId(2);
myBean2.setName("shit");
List<MyBean> mybeanList = new ArrayList<MyBean>();
mybeanList.add(myBean1);
mybeanList.add(myBean2);
JSONArray jsonArray = JSONArray.fromObject(mybeanList);
System.out.println("mybeanList - " + jsonArray);
Map<String, Object> map = new HashMap<String, Object>();
map.put("beanlist", jsonArray);
JSONObject jsonObject = JSONObject.fromObject(map);
System.out.println("json - " + jsonObject);
}
}
[/code]
Bean 2개를 List에 add를 한다음에 JSONArray라는 객체가 List를 배열로 만드는놈입니다.
mybeanList - [{"id":1,"name":"mudchobo"},{"id":2,"name":"shit"}]
이런식으로 만듭니다.
저거를 JSONObject클래스를 이용해서 앞에 이름을 붙여줍니다. Map을 이용하면 됩니다
Map을 이용해서 put에서 첫번째 인자에 이름을 넣고, 두번째 인자에 방금 생성한 Array를 넣으면 됩니다.
그리고 JSONObject.fromObject메소드를 이용해서 생성하게 되면 이렇게 됩니다.
json - {"beanlist":[{"id":1,"name":"mudchobo"},{"id":2,"name":"shit"}]}
이상입니다-_-;
Jakarta POI
Jakarta POI
VII. 엑셀 쓰기예제
쓰기도 역시 읽기와 비슷합니다.
① 엑셀 워크북을 생성합니다. 행과 셀을 생성하려면 당연한 절차겠죠?
HSSFWorkbook workbook = new HSSFWorkbook();
② 시트를 생성합니다.
시트명을 파라미터로 바로 생성 합니다.
HSSFSheet sheet = workbook.createSheet("sheet name");
만약 한글로 시트명을 만들려면 다음과 같이 인코딩이 필요합니다.
HSSFSheet sheet = workbook.createSheet();
workbook.setSheetName( 0 , "한글" , HSSFWorkbook.ENCODING_UTF_16 );
③ 셀에 사용할 스타일을 미리 생성해 둡니다.
HSSFCellStyle style = wb.createCellStyle();
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setLeftBorderColor(HSSFColor.GREEN.index);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
style.setRightBorderColor(HSSFColor.BLUE.index);
style.setBorderTop(HSSFCellStyle.BORDER_MEDIUM_DASHED);
style.setTopBorderColor(HSSFColor.BLACK.index);
등 여러가지 스타일을 만들 수 있습니다.
스타일은 다음 주소를 참고하세요
http://jakarta.apache.org/poi/apidocs/org/apache/poi/hssf/usermodel/HSSFCellStyle.html
④ 로우를 하나 생성합니다.
HSSFRow row = sheet.createRow(0);
⑤ 셀츨 하나 생성하여 스타일을 주고 값을 입력합니다.
HSSFCell cell = row.createCell((short)0);
cell.setCellStyle(style);
cell.setCellValue("jakarta project!");
만약 한글을 입력한다면 인코딩 해야 하며 값 세팅전에 해야 합니다.
cell.setEncoding(HSSFCell.ENCODING_UTF_16); //한글 처리
cell.setCellStyle(style);
cell.setCellValue("자카드타 프로젝트!");
⑥ 모든 셀이 다 입력되었으면 파일을 만듭니다.
FileOutputStream fs = new FileOutputStream("excelfile.xls");
workbook.write(fs);
fs.close();
VIII. 쓰기샘플 소스
<%@ page language="java" contentType="text/html;charset=euc-kr" %>
<% try { String[] cell_value = {"자카르타","프로젝트","http://www.jakartaproject.com/"}; HSSFWorkbook workbook = new HSSFWorkbook();
HSSFCellStyle style = workbook.createCellStyle(); HSSFRow row = sheet.createRow(0); </body> |
자 결과화면 입니다.
성공!
위의 소스를 기본으로 한다면 그리 어렵지 않을겁니다 ^^
참고로 셀병합은
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("new sheet");
HSSFRow row = sheet.createRow((short) 1);
HSSFCell cell = row.createCell((short) 1);
cell.setCellValue("This is a test of merging");
//셀병합
//Region(int 시작row, short 시작col, int 종료row, short 종료col)
sheet.addMergedRegion(new Region(1,(short)1,1,(short)2));
FileOutputStream fileOut = new FileOutputStream("workbook.xls");
wb.write(fileOut);
fileOut.close();
와 같이하면 됩니다