[Java] Apache POI : 엑셀파일 쓰기

Study/Java 2019. 6. 6. 12:05 Posted by meanoflife
반응형

POI 라이브러리를 이용하여 엑셀파일을 출력하는 예제입니다.

일전에 작성하였던 내용에 CellStyle을 이용하여 색상 및 스타일을 지정하는 소스가 추가되었습니다.

 

티스토리의 게시판 작성방식이 변경되어, 이를 활용하기 위해 게시글을 재작성하였습니다.

변경된 글쓰기에는 코드블럭을 추가할 수 있는 기능이 있기 때문입니다.

이전 글쓰기에 이런 기능이 없어 소스코드를 올리기가 상당히 힘들었는데, 기능이 추가되어 다행입니다.

	public static void main(String[] args) {
		
		// Workbook 생성
		@SuppressWarnings("resource")
		XSSFWorkbook wb = new XSSFWorkbook(); // Excel 2007 이상

		XSSFSheet sh = wb.createSheet( "First" );
		XSSFRow row = null;
		XSSFCell cell = null;
		
		/*
		 * Excel-File의 스타일을 적용한다.
		 *   - 색상, 글꼴, 정렬, 라인선(테두리선), Formatting
		 */
		CellStyle csBase = wb.createCellStyle();
		
		// 글꼴
		XSSFFont fBase = wb.createFont();
		fBase.setFontName( "나눔고딕코딩" );       // Font
		fBase.setFontHeightInPoints( (short) 8 );  // Font
		csBase.setFont( fBase );
		
		// 색상
		csBase.setFillForegroundColor( (short) IndexedColors.LIGHT_BLUE.getIndex() );
		csBase.setFillPattern( FillPatternType.SOLID_FOREGROUND );
		
		// 정렬
		csBase.setAlignment( HorizontalAlignment.CENTER );  // 중앙정렬
		
		// 라인선(테두리선)
		csBase.setBorderLeft( BorderStyle.THIN );
		csBase.setBorderRight( BorderStyle.THIN );
		csBase.setBorderTop( BorderStyle.THIN );
		csBase.setBorderBottom( BorderStyle.THIN );
		
		// Formatting
		csBase.setDataFormat( wb.createDataFormat().getFormat( "#,##0" ) );
		
		/*
		 * Excel-file에 데이터를 출력한다.
		 */
		row = sh.createRow( 0 );       // 1행
		cell = row.createCell( 0 ); cell.setCellValue( "1행1열" );
		cell = row.createCell( 1 ); cell.setCellValue( "1행2열" );
		
		row = sh.createRow( 1 );       // 2행
		cell = row.createCell( 0 ); cell.setCellValue( "2행1열" );
		cell = row.createCell( 1 ); cell.setCellValue( "2행2열" );
		cell.setCellStyle( csBase );   // CellStyle 적용
		
		try {
			String strFilePath = "E:/TestExcel.xlsx";
			FileOutputStream fOut = new FileOutputStream( strFilePath );
            
			wb.write( fOut );
			
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(0);
		}
	}

출력할 Excel의 Workbook객체를 생성하고, Row 및 Cell을 지정하에 데이터를 출력합니다.

폰트 및 스타일은 Cell단위로 적용되며, CellStyle 객체를 이용하여 처리할 수 있습니다.

 

반응형