반응형

※ 본 문서는 "Thema.문서보안 Excel-file, Java POI로 작업하기" 를 위해 작업한 문서입니다.

※ 참고링크 : Apache POI : 엑셀파일 쓰기

 

"Thema.문서보안 Excel-file, Java POI로 작업하기" 

    1. 암호화된 Excel-file을 Excel-VBA를 이용하여 Text-file로 생성한다.( Delimeter 이용 )

    2. Java로 Text-file을 읽는다.

        - Excel의 Cell내용중 '줄 바꿈'문자가 있을 경우, 라인 병합하기

    3. Apache POI Library를 이용하여 결과를 Excel-file로 출력한다.( 신규 Excel-file 생성 )

2중배열( ArrayList<ArrayList<String>> )을 Excel-File로 생성합니다.

package Java;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 * 2중배열의 DATA를 엑셀로 출력
 * : Apache POI Library를 이용하요 Excel-file을 생성한다.
 * 
 * @author PSG
 *
 */
public class Xls2Txt_WriteXls {

	public static void exportExcel( ArrayList<ArrayList<String>> arr2Data ) {
		
		// Workbook 생성
		@SuppressWarnings("resource")
		XSSFWorkbook wb = new XSSFWorkbook(); // Excel 2007 이상

		XSSFSheet sh = wb.createSheet( "Sheet1" );
		
		XSSFRow row = null;
		XSSFCell cell = null;
		
		// Cell의 스타일을 적용한다.
		CellStyle csBase = wb.createCellStyle();
		
		// 글꼴
		XSSFFont fBase = wb.createFont();
		fBase.setFontName( "나눔고딕코딩" );       // Font
		fBase.setFontHeightInPoints( (short) 8 );  // Font
		csBase.setFont( fBase );
		
		// 라인선(테두리선)
		csBase.setBorderLeft( BorderStyle.THIN );
		csBase.setBorderRight( BorderStyle.THIN );
		csBase.setBorderTop( BorderStyle.THIN );
		csBase.setBorderBottom( BorderStyle.THIN );
		
		
		// DATA출력
		for( int i = 0; i < arr2Data.size(); i++ ) {
			
			ArrayList<String> arrData = arr2Data.get( i );
			
			row = sh.createRow( i );
			
			for( int k = 0; k < arrData.size(); k++ ) {
				
				cell = row.createCell( k );             // 열
				cell.setCellValue( arrData.get( k ) );  // DATA
				cell.setCellStyle( csBase );            // CellStyle 적용
			}
		}
		
		try {
			String strFilePath = "E:/Test.xls";
			
			FileOutputStream fOut = new FileOutputStream( strFilePath );
			wb.write( fOut );
			
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(0);
		}
		
	}
}

실제 생성된 파일과 내용입니다.

끝.

반응형