2009-11-25 5 views
1

지금이 함수를 호출 할 때마다 Excel workbook.xls의 B3 셀에있는 값이 업데이트됩니다. 이 함수를 호출 할 때마다이 함수를 호출 할 때마다 new Excel 파일을 생성해서는 안되지만 첫 번째 호출에서는 A1, 두 번째 호출에서는 A2, 세 번째 호출에서는 A3 등의 순서로 셀 값을 추가해야합니다. 이걸로 나를 도울 수 있니?java - appending excel values ​​

private static void readFromFile(String filename) { 
     // TODO Auto-generated method stub 
     BufferedReader bufferedReader = null; 

     try { 

      //Construct the BufferedReader object 
      bufferedReader = new BufferedReader(new FileReader(filename)); 

      String line = null; 

      while ((line = bufferedReader.readLine()) != null) { 
       //Process the data, here we just print it out 

       HSSFWorkbook wb = new HSSFWorkbook(); 
       HSSFSheet sheet = wb.createSheet("new sheet"); 
       HSSFRow row = sheet.createRow(2); 
       int s_row=1; 
       row.createCell(s_row).setCellValue(line); 
       s_row++; 
      // row.createCell(1).setCellValue(new Date()); 
       FileOutputStream fileOut = new FileOutputStream("c:\\workbook.xls"); 
       wb.write(fileOut); 
       fileOut.close(); 



       // System.out.println(line); 
      } 

     } catch (FileNotFoundException ex) { 
      ex.printStackTrace(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      //Close the BufferedReader 
      try { 
       if (bufferedReader != null) 
        bufferedReader.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
+0

여기에 집에서 놀고있는 사람들을 위해 위의 코드가 나와 있습니다. http://www.javadb.com/read-from-file-using-bufferedreader – iokevins

답변

0

위에서 요청한 사항을 완벽하게 기능하는 (조금 서투른) 구현에 대해서는 아래를 참조하십시오. 특히주의하십시오 : (1) while 루프 만이 셀을 생성하고 채 웁니다. (2) HSSFWorkbook, Sheet, Row 및 s_row의 초기화가 while 루프 외부에서 발생합니다. (3) 파일은 한 번 끝에 디스크에 기록됩니다. (4) 셀은 인덱스 1 대신 인덱스 0으로 시작합니다. (5) 스프레드 시트의 첫 번째 행을 가져 오려면 CreateRow (0)를 지정해야합니다. (6) 대신 Sheet and Row를 사용했습니다 ... 귀하의 마일리지가 다를 수 있습니다! :)

해피 코딩 : 내 testinput.txt 파일은 다음 데이터를 포함

import org.apache.poi.xssf.usermodel.*; 
import org.apache.poi.ss.usermodel.*; 
import org.apache.poi.hssf.usermodel.*; 
import java.io.*; 

public class SpreadSheet { 

    /** 
    * Reads text from a file line by line 
    */ 
    public void readFromFile(String filename) { 

     BufferedReader bufferedReader = null; 
     HSSFWorkbook wb; 
     Sheet sheet; 
     Row row; 
     Cell aCell; 
     int s_row; 
     FileOutputStream fileOut = null; 

     try { 

      //Construct the BufferedReader object 
      bufferedReader = new BufferedReader(new FileReader(filename)); 

      String line = null; 

      s_row = 0; 
      wb = new HSSFWorkbook(); 
      sheet = wb.createSheet("new sheet"); 
      row = sheet.createRow(0); 
      fileOut = new FileOutputStream("workbook.xls"); 

      while ((line = bufferedReader.readLine()) != null) 
      {   
        aCell = row.createCell(s_row++); 
        aCell.setCellValue(line); 
      } 

      // Do this once 
      wb.write(fileOut); 
     } catch (FileNotFoundException ex) { 
      ex.printStackTrace(); 
     } catch (IOException ex) { 
      ex.printStackTrace(); 
     } finally { 
      //Close the BufferedReader 
      try { 
       if (bufferedReader != null) 
        bufferedReader.close(); 
       if (fileOut != null) 
        fileOut.close(); 
      } catch (IOException ex) { 
       ex.printStackTrace(); 
      } 
     } 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     new SpreadSheet().readFromFile("testinput.txt"); 
    } 
} 

: 위의 Java 코드를 실행 한 후

1 
2 
3 
4 
5 
6 
7 

은 Microsoft Excel 워크 시트 파일의 데이터를 포함 셀 A1에서 G1까지.

0

나는이 함수를 호출 할 때마다 새로운 파일을 생성한다는 것을 알았다. 대신 기존 파일을 열고 수정할 시트를 가져온 다음 값을 수정해야합니다. 당신은 당신이 필요로하는 세포를 수정하고 파일을 저장해야합니다이 후

try { 
     inputStream = new FileInputStream(InputFile); 
    }catch (FileNotFoundException e) { 
     System.out.println ("File not found in the specified path."); 
     e.printStackTrace(); 
    } 

    try { 
     fileSystem = new POIFSFileSystem (inputStream); 
    } catch (IOException e1) { 
     System.out.println("Cannot create POIFSFileSystem object using the file specified!"); 
     e1.printStackTrace(); 
    }  

    try { 
     workBook = new HSSFWorkbook(fileSystem); 
    } catch (IOException e) { 
     System.out.println("Cannot create HHSFWorkbook from POIFSFileSystem object"); 
     e.printStackTrace(); 
    } 

    HSSFSheet sheet = workBook.getSheetAt(0); 

: 벨로 첫 번째 시트 파일을 열고 얻기를위한 코드입니다.

관련 문제