使用Java将数据dynamic插入到Excel中

我是新来的Java和我有问题插入dynamic数据到我的Excel文件。 这是下面的代码。 如果我删除我的Excel文件,并重新运行我的程序。 它会创build一个新的文件并且插入下面的数据(hello,goodbye,true,date)。第一次运行时,程序仍然可以插入下面的数据,但是当我执行下一次运行时,数据不能存储到下一行。 这是检查文件存在以下代码。 我希望我能find一个人来帮助我,因为我正在苦苦挣扎这几天的代码。

if (file.exists()) { try{ fout = new FileOutputStream(fileName, true); fin = new FileInputStream(fileName); lPOIfs = new POIFSFileSystem(fin); workbook = new HSSFWorkbook(lPOIfs); worksheet = workbook.getSheet("POI Worksheet"); for (int i=0; i<workbook.getNumberOfSheets(); i++) { System.out.println( workbook.getSheetName(i) ); } HSSFSheet sheet = workbook.getSheetAt(0); last = sheet.getLastRowNum(); }catch (IOException e) { e.printStackTrace(); }catch (NullPointerException e){ e.printStackTrace(); } } else { //create new file try{ fout = new FileOutputStream(file); }catch (IOException e) { e.printStackTrace(); } workbook = new HSSFWorkbook(); worksheet = workbook.createSheet("POI Worksheet"); } 

这是检查行中最后一个数字的代码:

  if(last != 0){ last = worksheet.getLastRowNum()+1; }else{ last = worksheet.getLastRowNum(); } 

这是写function的完整代码:

  public void writeExcel(){ String fileName = "C:\\Users\\blslyeoh\\Documents\\NetBeansProjects\\JavaApplication1\\poi-test.xls"; try { int last=0; File file = new File(fileName); FileInputStream fin = null; HSSFWorkbook workbook = null; HSSFSheet worksheet = null; FileOutputStream fout = null; POIFSFileSystem lPOIfs = null; if (file.exists()) { try{ fout = new FileOutputStream(fileName, true); fin = new FileInputStream(fileName); lPOIfs = new POIFSFileSystem(fin); workbook = new HSSFWorkbook(lPOIfs); worksheet = workbook.getSheet("POI Worksheet"); for (int i=0; i<workbook.getNumberOfSheets(); i++) { System.out.println( workbook.getSheetName(i) ); } HSSFSheet sheet = workbook.getSheetAt(0); last = sheet.getLastRowNum(); }catch (IOException e) { e.printStackTrace(); }catch (NullPointerException e){ e.printStackTrace(); } } else { //create new file try{ fout = new FileOutputStream(file); }catch (IOException e) { e.printStackTrace(); } workbook = new HSSFWorkbook(); worksheet = workbook.createSheet("POI Worksheet"); } // index from 0,0... cell A1 is cell(0,0) if(last != 0){ last = worksheet.getLastRowNum()+1; }else{ last = worksheet.getLastRowNum(); } HSSFRow row = worksheet.createRow(last); HSSFCell cellA1 = row.createCell((short)0); cellA1.setCellValue("hello"); HSSFCellStyle cellStyle = workbook.createCellStyle(); //cellStyle.setFillForegroundColor(HSSFColor.GOLD.index); //cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //cellA1.setCellStyle(cellStyle); HSSFCell cellB1 = row.createCell((short) 1); cellB1.setCellValue("goodbye"); //cellStyle = workbook.createCellStyle(); //cellStyle.setFillForegroundColor(HSSFColor.LIGHT_CORNFLOWER_BLUE.index); //cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); //cellB1.setCellStyle(cellStyle); HSSFCell cellC1 = row.createCell((short) 2); cellC1.setCellValue(true); HSSFCell cellD1 = row.createCell((short) 3); cellD1.setCellValue(new Date()); cellStyle = workbook.createCellStyle(); cellStyle.setDataFormat(HSSFDataFormat .getBuiltinFormat("m/d/yy h:mm")); cellD1.setCellStyle(cellStyle); workbook.write(fout); fout.flush(); fout.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 

  1. 先阅读excel文件!
  2. 如果你成功通过工作表
    worksheet = workbook.getSheet(“POI Worksheet”);
    然后closures文件inputstream。
  3. 如果你不能得到工作表,然后创build一个通过
    workbook = new HSSFWorkbook();
    worksheet = workbook.createSheet(“POI Worksheet”);
  4. 你有一张现有的或新的wooksheet。
    追加行并将其写入文件并closures文件输出stream
    fout = new FileOutputStream(file);
    workbook.write(FOUT);
    fout.close();

我希望这可以帮助你。 祝你今天愉快 :-)