gpt4 book ai didi

java - 使用 Apache POI 读/写

转载 作者:行者123 更新时间:2023-11-30 07:02:35 25 4
gpt4 key购买 nike

我最近刚刚开始使用 Apache POI 进行一些 Excel 读写,但遇到了一些问题。我有一个提交按钮,用于读取表单文本字段并将其打印到 Excel 文件:

            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();

有人能给我一些见解或指导吗?

最佳答案

您正在将数据附加到文件中。我假设您想重新创建工作表。

public FileOutputStream(String name, boolean append) throws FileNotFoundException

append - if true, then bytes will be written to the end of the file rather than the beginning

此外,请确保在重用文件之前关闭输入流

inp.close();

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

关于java - 使用 Apache POI 读/写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40646238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com