반응형
"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 ReadMultiLine {
public static void main(String[] args) {
ArrayList<ArrayList<String>> arr2Result = new ArrayList<ArrayList<String>>();
String strFile = "./src/SampleData/ReadMultiLine.dat";
int iCnt = 6;
try {
@SuppressWarnings("unused")
BufferedReader br = new BufferedReader( new FileReader( new File( strFile ) ) );
String strLine = "";
boolean bMulti = false;
while( ( strLine = br.readLine() ) != null ) {
if( strLine.trim().isEmpty() ) continue;
ArrayList<String> arrLine = new ArrayList<String>();
String[] saCol = strLine.split( "\\^" ); // Delimeter를 이용하여 데이터 분할
// Multi-Line 처리
if( bMulti && saCol.length < iCnt ) {
// 이전Row에 추가
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 ) + "\n" + saCol[i] );
else arrLine.add( saCol[i].trim() );
}
// 멀티라인 bit 초기화하고 Next-Line 처리
bMulti = false;
continue;
}
// 데이터갯수가 적으면 '줄 바꿈'문자의 의핸 개행으로 판다.
if( saCol.length < iCnt ) bMulti = true;
for( int i = 0; i < saCol.length; i++ ) arrLine.add( saCol[i].trim() );
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()으로 출력한 내용입니다.

끝.
반응형
'Study > Java' 카테고리의 다른 글
[Java] 시작문자로 개행된 줄 바꿈 내용을 라인 병합하기 (0) | 2019.12.08 |
---|---|
[Java] POI를 이용하여 2중배열 Data를 Excel로 저장하기 (0) | 2019.12.08 |
[고찰] Java에서 줄 바꿈된 라인, 병합하기 (0) | 2019.12.08 |
[Java] 로또 번호 생성 - 작성 (0) | 2019.06.06 |
[Java] JDBC를 이용한 DataBase 접속 (0) | 2019.06.06 |