2016-11-17 40 views
1

最近、Apache POIを使用して読み書きに優れたサービスを開始しましたが、少し問題があります。私は、ボタンの読み取りフォームのテキストフィールドを提出し、Excelファイルにそれを印刷していますApache POIで読み書きする

  HSSFWorkbook workbook = new HSSFWorkbook(); 
    HSSFSheet sheet = workbook.createSheet("Reservations"); 

     Map<String, Object[]> data = new TreeMap<String, Object[]>(); 

     data.put("1", new Object[] {"Reservation ID", "NAME", "ARRIVAL DATE", "LENGTH OF STAY","HOME ADDRESS", "EMAIL", "PHONE NUMBER" ,"RESERVATION TYPE"}); 
     data.put("2", new Object[] {1, advanceLastField.getText(), arrivalDateForm.getText(), stayNum.getText(),advanceAddressForm.getText(), advanceEmailForm.getText(),advancePhoneForm.getText(),"D"}); 

     Set<String> keyset = data.keySet(); 
     int rownum = 0; 
     for (String key : keyset){ 
      Row row = sheet.createRow(rownum++); 
      Object [] objArr = data.get(key); 
      int cellnum = 0; 
      for (Object obj : objArr){ 
       Cell cell = row.createCell(cellnum++); 
       if(obj instanceof String) 
        cell.setCellValue((String)obj); 
       else if(obj instanceof Integer) 
        cell.setCellValue((Integer)obj); 
      } 

     } 
     try{ 
      FileOutputStream out = new FileOutputStream(new File("testSheet.xls"),true); 
      workbook.write(out); 
      out.close(); 
      System.out.println("Advance Reservation succesfully written"); 
     }catch (Exception e){ 
      e.printStackTrace(); 
     } 
    } 
    } 
    }catch(NumberFormatException e){ 
     parsable1=false; 
    } 

これが正しく機能しているが、私の問題は、その後、Excelシートを更新しようとしています。これは私の更新コードです

  FileInputStream inp = new FileInputStream(new File("testSheet.xls")); 
     HSSFWorkbook wb = new HSSFWorkbook(inp); 
     HSSFSheet sheet = wb.getSheetAt(0); 
     if(idLookup.getText() == "1"){ 
      if(updateNameForm.getText()!= null){ 
       Row row = sheet.getRow(1); 
       Cell cell = row.getCell(1); 
       cell.setCellType(CellType.STRING); 
       cell.setCellValue(updateNameForm.getText()); 
      } 
     } 
FileOutputStream fileOut = new FileOutputStream("testSheet.xls",true); 
wb.write(fileOut); 
fileOut.close(); 

誰でも私に少しの洞察力や指導を与えることができますか?ありがとう!

答えて

1

ファイルにデータを追加しています。私はあなたがシートを作り直したいと思っています。

public FileOutputStream(String name, boolean append) throws FileNotFoundException 

のappend - trueの場合、バイトはファイル ではなく、始まりも

の末尾に書き込まれます、ファイルを再利用する前に、入力ストリームを閉じてください

inp.close(); 

FileOutputStream fileOut = new FileOutputStream("testSheet.xls"); 
wb.write(fileOut); 
fileOut.close(); 
+0

ありがとうございますが、それは修正されていないようです。私が基本的にしようとしているのは、指定されたセル(1行目のセル1)の情報を別のテキストフィールドの新しい情報に置き換えることです。 –

+0

@HunterChildress、シートオブジェクトを最後のファイルに上書きする必要があります。編集を確認すると、入力ストリームが閉じられておらず、新しい出力ストリームが同じファイルに開かれていることがわかりました。例外はありますか? –

関連する問題