Java 使用ApachePOI读/写

Java 使用ApachePOI读/写,java,excel,apache,apache-poi,writing,Java,Excel,Apache,Apache Poi,Writing,我最近刚开始使用ApachePOI进行excel的读写,我有点问题。我有一个“提交”按钮,用于读取表单文本字段并将其打印到excel文件: HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("Reservations"); Map<String, Object[]> data = new TreeMap<Strin

我最近刚开始使用ApachePOI进行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;
    }

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

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

public FileOutputStream(String name, boolean append) throws FileNotFoundException
append-如果为true,则字节将写入文件末尾 而不是开始

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

inp.close();

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

谢谢,但似乎还没修好。我基本上是想用不同文本字段中的新信息替换指定单元格(第1行的单元格1)中的信息。@HunterChildress,您必须在末尾将图纸对象改写为文件。检查编辑,我刚刚注意到inputstream尚未关闭,在同一个文件上打开了一个新的outputstream。你有例外吗?
inp.close();

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