2013-12-08 3 views
0

나는 txt 파일을 받아 엑셀 스프레드 시트에 넣는 프로그램 (아래)을 가지고있다. 필자의 목표는 텍스트 파일에서 데이터를 추출하는 것이지만 콜론 뒤에 텍스트 만 추출하는 것입니다.txt 파일에서 데이터를 가져와 Excel 스프레드 시트로 보내려면 어떻게해야합니까? (txt 파일의 ":"다음에 오는 모든 것을 원합니다)?

예 txt 파일 (사이에 공백 "이름"과 "전화 :"는 TXT의 행) :

이름 : 존 미상

전화 : (XXX) XXX-XXXX

내 프로그램이 Excel 시트 및 제목 "이름"열에 내 존 프로그램을 저장하려면 : Excel (xxx) xxx-xxxx 만 Excel 시트 및 제목 열 "전화"에 저장하려는 경우 싶습니다. 여러 항목을 스프레드 시트에 추가 할 수 있어야합니다.

예 (엑셀 시트 생성시) : 이것은 내가보기를 원하는 것입니다!

.... A .............. B

1 이름 | ""하지만 캔트 찾을 문자열이 후에 만 ​​데이터를 얻을 수 분할에 전화

2 홍길동 (123) 123-1234

3 잭 디는

(123) 123-1231 그래서 나는 보았다 그것에 관한 많은 문서. 또한 정보가 Excel에서 제대로 정렬되도록합니다. 어떤 도움이라도 대단히 감사합니다.

감사합니다, 제임스

package EREW; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Iterator; 
import java.util.List; 
import java.util.Scanner; 


import org.apache.poi.hssf.usermodel.HSSFCell; 
import org.apache.poi.hssf.usermodel.HSSFRichTextString; 
import org.apache.poi.hssf.usermodel.HSSFRow; 
import org.apache.poi.hssf.usermodel.HSSFSheet; 
import org.apache.poi.hssf.usermodel.HSSFWorkbook; 
import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 
import org.apache.poi.ss.usermodel.Cell; 
import org.apache.poi.ss.usermodel.Row; 
import org.apache.poi.ss.usermodel.Sheet; 
import org.apache.poi.ss.usermodel.Workbook; 
import org.apache.poi.ss.usermodel.WorkbookFactory; 


public class ReadWriteXL 
{ 
public static void main(String[] args) throws InvalidFormatException, IOException{ 
    ArrayList arr=new ArrayList(); 
File f=new File("F:\\temp\\TEXT\\email.txt"); 

Scanner in=new Scanner(f); 
System.out.println("Read Data From The Txt file "); 
while(in.hasNext()) 
{  

arr.add(in.nextLine()); 
} 
System.out.println("Data From ArrayList"); 
System.out.println(arr); 


System.out.println("Write data to an Excel Sheet"); 
FileOutputStream fos=new FileOutputStream("F:/temp/1.xls"); 
HSSFWorkbook workBook = new HSSFWorkbook(); 
HSSFSheet spreadSheet = workBook.createSheet("email"); 
HSSFRow row; 
HSSFCell cell; 
for(int i=0;i<arr.size();i++){ 
    row = spreadSheet.createRow((short) i); 
cell = row.createCell(i); 
System.out.println(arr.get(i)); 
cell.setCellValue(arr.get(i).toString()); 
} 
System.out.println("Done"); 
workBook.write(fos); 
arr.clear(); 
System.out.println("ReadIng From Excel Sheet"); 

FileInputStream fis = null; 
    fis = new FileInputStream("F:/temp/1.xls"); 

    HSSFWorkbook workbook = new HSSFWorkbook(fis); 
    HSSFSheet sheet = workbook.getSheetAt(0); 
    Iterator rows = sheet.rowIterator(); 

    while (rows.hasNext()) { 
     HSSFRow row1 = (HSSFRow) rows.next(); 
     Iterator cells = row1.cellIterator(); 
     while (cells.hasNext()) { 
      HSSFCell cell1 = (HSSFCell) cells.next(); 
      arr.add(cell1); 
     } 
} 
System.out.println(arr); 

}} 

답변

0

파일 email.txt 항상 당신이 말한 형식이있는 경우 :

Name: John 
phone: (xxx) xxx-xxxx 

내가 행과 세포 생성에 익숙해 있지 않다, 그래서 당신에게 줄 것을 일부 의사 코드는 코드에서해야 할 일을 이해합니다.

코드 부분 :

//create a count for rows here 
inr rowNumber = 0; 
//Here you are reading your list with all data readed 
for(int i=0;i<arr.size()-1;i+=2){ //the -1 is for the array to stop on the 
           //last but one row 

    row = spreadSheet.createRow((short) rowNumber); //external count 

    //pseudocode from here 
    cell1 = row.createCell(0); 
    cell2 = row.createCell(1); 

    cell1.setCellValue( arr.get(i).substring(arr.get(i).indexOf(":")+1)); 
           //^this is for name 
    cell2.setCellValue( arr.get(i+1).substring(arr.get(i+1).indexOf(":")+1)); 
           //^this is for phone 

    rowNumber++; //increment your rowNumber 
} 
+0

프로그래밍에 익숙하지 않은 나는 의사 코드가 무엇인지 찾아야했다 : 어떤 외부 대 내부인지 확실하지 않은가? 카운트? – NILE

+0

외부 카운트는 FOR 바깥에서 정의되고'rowNumber' 내부에서 증가하는 변수입니다. 내부 카운트는 for에 사용 된 것이고,이 경우에는'i'입니다. 가짜 코드는 언어의 진정한 진정성이 아니라 어떻게 프로그래밍해야 하는지를 보여주는 방법 일뿐입니다. 뭔가를하고 변수를 테스트 한 다음 다른 변수를 합친 다음 프로그램을 완성합니다. –

+0

이것은 java의 두 번째 프로젝트입니다. (끝내고 싶습니다) 실제로 데이터를 조작 할 수있는 실제 프로그램입니다. -------------------------------------------------- 그래서 셀 생성을 Excel에서 얻었습니다. 아무 문제없이 셀을 만들었지 만 문제는 텍스트 파일에서 코드를 가져와야 할 때입니다. 그것은 스프레드 시트와 일치하지 않을 것이다. 예 : a1 b2 c3. 무슨 일이 일어나는지 알 수 있도록 코드를 작성하는 더 쉬운 방법이 있어야합니다. 예를 들어 의사 코드 : array (arr)에서 첫 번째 라인 가져 오기> ":"다음에 데이터 만 가져 오기> 행 및 셀 만들기> 셀 뒤에 입력 정보 : ":" – NILE

관련 문제