반응형

"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 생성 )

위의 사례처럼 내용중 개행문자에 의해 줄 바꿈이 일어난 문서를 Java로 읽을때의 예시입니다.

 

  - ① 라인을 시작하는 '시작 문자'로 판단하는 방법과

  - ② 형식이 있는 문서의 '데이터 갯수'로 판단하는 방법 중

 

시작문자로 판단하는 ①번에 해당하는 방법입니다.

package Java;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;

/**
 * 줄 바꿈 병합하기( 시작문자 )
 * : Text-file의 내용 중, 내용內 줄바꿈 문자의 의해 개행된 줄을 병합한다.
 * 
 * @author PSG
 *
 */
public class Xls2Txt_ReadMulti2 {

	public static void main(String[] args) {
		
		ArrayList<ArrayList<String>> arr2Result = new ArrayList<ArrayList<String>>(); 
		
		String strFile = "./src/SampleData/ReadMulti2.dat";
		int iCnt = 6;
		
		try {
			
			@SuppressWarnings("unused")
			BufferedReader br = new BufferedReader( new FileReader( new File( strFile ) ) );
			
			String strLine = "";
			
			while( ( strLine = br.readLine() ) != null ) {
				
				if( strLine.trim().isEmpty() ) continue;
				
				ArrayList<String> arrLine = new ArrayList<String>();
				
				String[] saCol = strLine.split( "\\^" );  // Delimeter를 이용하여 데이터 분할
				
				// Multi-Line처리
				// : 첫번째 열의 데이터가 "SEQ-"로 시작하는 데이터라고 상정함.( ※ 첫줄은 Title )
				if( !strLine.contains( "SEQ-" ) && arr2Result.size() != 0 ) {
					
					arrLine = arr2Result.get( arr2Result.size() - 1 );
					
					for( int i = 0; i < saCol.length; i++ ) {
						if( i == 0 ) arrLine.set( arrLine.size() - 1, arrLine.get( arrLine.size() - 1 ) + " " + saCol[i] );
						else arrLine.add( saCol[i] );
					}
				}
				else {
					for( int i = 0; i < saCol.length; i++ ) arrLine.add( saCol[i] );
					
					arr2Result.add( arrLine );
				}
			}
			
		}catch( Exception ex ) {
			ex.printStackTrace();
			System.exit(0);
		}
		
		// 결과 출력
		for( int i = 0; i < arr2Result.size(); i++ ) System.out.println( arr2Result.get(  i ) );
	}
}

결과를 System.out.println()으로 출력한 내용입니다.

끝.

반응형