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行目のセル1)の情報を別のテキストフィールドの新しい情報に置き換えることです。 –
@HunterChildress、シートオブジェクトを最後のファイルに上書きする必要があります。編集を確認すると、入力ストリームが閉じられておらず、新しい出力ストリームが同じファイルに開かれていることがわかりました。例外はありますか? –