2016-06-13 17 views
0

このコードを使用してExcelにファイルを追加しますが、このコードはレコードを追加する代わりに既存のファイルをクラッシュさせます。だから、どうすれば私のExcelファイルにレコードを追加できますか教えてください。Excelにファイルを追加中にExcelファイルが破損する

コード:

public static void writeToExcel() { 

     try { 
      File file = new File("C:\\Users\\abc\\Desktop\\Selenium Tests.xlsx"); 
      FileOutputStream fos = new FileOutputStream(file,true); 
      XSSFWorkbook workbook = new XSSFWorkbook();    
      XSSFSheet sheet = workbook.createSheet("fund"); 
      int rowNum = sheet.getLastRowNum()+1; 
      Row row = sheet.createRow(rowNum); 
      Cell cell0 = row.createCell(0); 
      cell0.setCellValue("Nav Value 1"); 
      Cell cell1 = row.createCell(1); 
      cell1.setCellValue("Amount Change 1");  
      Cell cell2 = row.createCell(2); 
      cell2.setCellValue("Percent Change 1"); 
      workbook.write(fos); 
      fos.flush(); 
      fos.close(); 
      System.out.println("done"); 
     } 
     catch (Exception exp) { 
      exp.printStackTrace(); 
     } 
    } 

答えて

0

あなたがたInputStream

のInputStream FOS =新しいFileInputStreamを(fileNameに)でブックを開く持っています。

ファイルを書き込むためにFileOutputStreamを使用します。

FileOutputStream fileOut =新しいFileOutputStream(fileName); workbook.write(fileOut);

最後の行番号に1を追加する必要はありません。

int rowNum = sheet.getLastRowNum()+ 1;

細胞は、0ベース

セルCELL0 = row.createCell(0)です。

public static void writeToExcel() { 

    try { 

     try { 
      String fileName = "C:\\Users\\best buy\\Downloads\\_temp.xlsx"; 
      InputStream fos = new FileInputStream(fileName); 
      Workbook workbook = WorkbookFactory.create(fos); 
      Sheet sheet = workbook.getSheet("fund"); 
      int rowNum = sheet.getLastRowNum()+1; 
      Row row = sheet.createRow(rowNum); 
      Cell cell0 = row.createCell(0); 
      cell0.setCellValue("Nav Value 1"); 
      Cell cell1 = row.createCell(1); 
      cell1.setCellValue("Amount Change 1");  
      Cell cell2 = row.createCell(2); 
      cell2.setCellValue("Percent Change 1"); 
      // Write the output to a file 
      FileOutputStream fileOut = new FileOutputStream(fileName); 
      workbook.write(fileOut); 
      fileOut.close(); 

      System.out.println("done"); 
     } 
     catch (Exception exp) { 
      exp.printStackTrace(); 
     } 
    } 
    catch (Exception exp) { 
     exp.printStackTrace(); 
    } 
} 
関連する問題