Whiteship's Note

14.6. Document views (Excel)

Spring/Chapter 14 : 2007. 5. 16. 18:11


1. 컨트롤러 만들고 bean으로 등록하기

2. view 클래스 만들기

3. view 프로퍼티 파일에 class 추가

이렇게 세 단계를 거치면 됩니다. 이 전에 작성한 글 두개에서 컨트롤러 만들고 등록하고 view 프로퍼티에 class추가해 주는 부분은 많이 살펴봤기 때문에 이번에는 생략하겠습니다.

public class MemberListExelView extends AbstractExcelView {

    @SuppressWarnings("unchecked")
    @Override
    protected void buildExcelDocument(Map model, HSSFWorkbook wb, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        HSSFSheet sheet;
        HSSFRow sheetRow;
        HSSFCell cell;

        sheet = wb.createSheet("MemberInfoList");
        sheet.setDefaultColumnWidth((short) 12);

        cell = getCell(sheet, 0, 0);
        setText(cell, "전체 멤버 조회");
        cell = getCell(sheet, 1, 0);
        setText(cell, "이름");
        cell = getCell(sheet, 1, 1);
        setText(cell, "이메일");
        cell = getCell(sheet, 1, 2);
        setText(cell, "홈페이지");

        List<MemberInfo> memberInfos = (List<MemberInfo>) model.get("members");
        MemberInfo memberInfo = null;

        for(int i = 0 ; i < memberInfos.size() ; i++ ){
            memberInfo = memberInfos.get(i);
            cell = getCell(sheet, i+2, 0);
            setText(cell, memberInfo.getName());
            cell = getCell(sheet, i+2, 1);
            setText(cell, memberInfo.getEmail());
            cell = getCell(sheet, i+2, 2);
            setText(cell, memberInfo.getHome());
        }
    }
}

getCell()로 cell을 가져 온 다음 setText(cell, String)으로 각각의 셀을 채워 넣는 형식입니다.
사용자 삽입 이미지
사용자 삽입 이미지
올커니.. 한글이 또 깨졌구나.

한글은 2byte 영문은 1byte 그래서 자꾸 깨지는 건데 HSSFCell API를 보면 setEncoding이라는 메소드가 있습니다. 여기에 1을 넣어주면 16bit, 0을 넣어주면 8bit로 설정된다고 합니다.

cell = getCell(sheet, 0, 0);
cell.setEncoding((short)1);
setText(cell, "전체 멤버 조회");

요런 식으로 중간 중간 setEncoding() 사용해주면 한글도 제대로 출력할 수 있습니다.

사용자 삽입 이미지

'Spring > Chapter 14' 카테고리의 다른 글

Spring에서 Freemarker 사용하기  (2) 2008.02.20
14.6. Document views (Excel)  (0) 2007.05.16
14.6. Document views (PDF)  (0) 2007.05.16
14.5. XSLT  (1) 2007.05.16
14.3. Tiles  (0) 2007.05.15
14. Integrating view technologies  (0) 2007.05.15
top

Write a comment.




: 1 : 2 : 3 : 4 : 5 : 6 :