使用POI写入现有xls文件

场景大致是这样的:

我有一个java程序,有几个方法被随机调用。

第一种方法将使用apache POI创建一个xls文件,并将列出列。

所有其他方法都必须将记录写入此文件。

最后的方法将首先邮寄创建的xls,然后删除xls。

对于上述情况,以下方法是正确的:

1)创建文件并将标题名称放在第一个方法中:

Workbook wb = new HSSFWorkbook(); CreationHelper createHelper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("First Sheet"); Row row = sheet.createRow((short)0); row.createCell(1).setCellValue(createHelper.createRichTextString("First Column")); row.createCell(2).setCellValue(createHelper.createRichTextString("Second Column")); row.createCell(3).setCellValue(createHelper.createRichTextString("Third Column")); // Write the output to a file FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); 

2)在剩下的方法中记录:

我不确定这里的代码。 我知道我可以使用getRowCount方法到达工作表的末尾,然后添加新行。 但我找不到任何示例代码。

另外,如何访问现有的xls文件?

3)在最后一种方法中,文件将被邮寄然后删除。

在删除文件之前是否需要执行任何其他步骤?

这就是我想要的:

 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.CreationHelper; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class PoiWriteExcelFile { public void methodOne() { System.out.println("Into method one!"); Workbook wb = new HSSFWorkbook(); Font f = wb.createFont(); f.setBoldweight(Font.BOLDWEIGHT_BOLD); CellStyle cs = wb.createCellStyle(); cs.setFont(f); CreationHelper createHelper = wb.getCreationHelper(); Sheet sheet = wb.createSheet("First Sheet"); Row row = sheet.createRow((short) 0); Cell c = null; c = row.createCell(0); c.setCellStyle(cs); c.setCellValue(createHelper.createRichTextString("First Column")); c = row.createCell(1); c.setCellStyle(cs); c.setCellValue(createHelper.createRichTextString("Second Column")); c = row.createCell(2); c.setCellStyle(cs); c.setCellValue(createHelper.createRichTextString("Third Column")); // Write the output to a file FileOutputStream fileOut; try { fileOut = new FileOutputStream("C:\\TestData\\POI\\poi-test.xls"); wb.write(fileOut); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Out of method one!"); } public void methodTwo() { System.out.println("Into method two!"); InputStream inp; try { inp = new FileInputStream("C:\\TestData\\POI\\poi-test.xls"); Workbook wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt(0); Row row = sheet.createRow((short) (sheet.getLastRowNum() + 1)); Cell c = null; CreationHelper createHelper = wb.getCreationHelper(); c = row.createCell(0); c.setCellValue(createHelper.createRichTextString("First Row First value")); c = row.createCell(1); c.setCellValue(createHelper.createRichTextString("First Row Second value")); c = row.createCell(2); c.setCellValue(createHelper.createRichTextString("First Row Third value")); FileOutputStream fileOut = new FileOutputStream("C:\\TestData\\POI\\poi-test.xls"); wb.write(fileOut); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Out of method two!"); } public void methodThree() { System.out.println("Into method three!"); InputStream inp; try { inp = new FileInputStream("C:\\TestData\\POI\\poi-test.xls"); Workbook wb = WorkbookFactory.create(inp); Sheet sheet = wb.getSheetAt(0); Row row = sheet.createRow((short) (sheet.getLastRowNum() + 1)); Cell c = null; CreationHelper createHelper = wb.getCreationHelper(); c = row.createCell(0); c.setCellValue(createHelper.createRichTextString("Second Row First value")); c = row.createCell(1); c.setCellValue(createHelper.createRichTextString("Second Row Second value")); c = row.createCell(2); c.setCellValue(createHelper.createRichTextString("Second Row Third value")); FileOutputStream fileOut = new FileOutputStream("C:\\TestData\\POI\\poi-test.xls"); wb.write(fileOut); fileOut.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } System.out.println("Out of method three!"); } public void methodFour() { System.out.println("Into method four!"); File file = new File("C:\\TestData\\POI\\poi-test.xls"); // file.deleteOnExit(); System.out.println("Out of method four!"); } public static void main(final String[] args) { PoiWriteExcelFile myObj = new PoiWriteExcelFile(); myObj.methodOne(); myObj.methodTwo(); myObj.methodThree(); myObj.methodFour(); } }