只有最后一个索引值才会插入到Excel工作表中

时间:2017-12-18 11:00:22

标签: java selenium

我正在尝试通过网络表格将数据写入excel 使用空白数据创建起始行,最后一行填充数据,最后一个索引值 即使 directory = "c:\test\" fileName = Dir(directory & "*.xl??") Do While fileName <> "" 'Put Code From For Loop here. Loop 中存在数据,其他行也不会被数据填充。

Arraylist

2 个答案:

答案 0 :(得分:1)

您应该将此行添加到for循环

  HSSFRow row = sheet.createRow(a++);

答案 1 :(得分:0)

在执行此操作时,每次调用该函数时都会创建一个新工作簿,并且最终会删除之前的工作簿。因此,您只能获得最后一次通话的结果。

如果你想在每次调用时添加一行,就这样做,你需要将行号和工作簿作为类变量。您还需要抓住已创建的工作表以附加到工作表。或者你也要删除它。

  public static void main(String[] args) {
    try {

      write_Excel("myFile.xls","sheetName",
          Arrays.asList("value 1", "value 2", "value 3"));

      write_Excel("myFile.xls","sheetName",
          Arrays.asList("value 4", "value 5", "value 6"));

    } catch(IOException e) {
      e.printStackTrace();
    }
  }

  private static int newRowIndex = 0;
  private static HSSFWorkbook workbook = new HSSFWorkbook();

  public static void write_Excel(String fileName, String sheetName, List<String> dataToWrite) throws IOException {
    FileOutputStream fos = new FileOutputStream(fileName);

    // open or create sheet
    HSSFSheet sheet = workbook.getSheet(sheetName) != null ?
        workbook.getSheet(sheetName) :
        workbook.createSheet(sheetName);

    // create a new row
    HSSFRow row = sheet.createRow(newRowIndex ++);

    // write your data in the new row
    for (int colIndex = 0; colIndex < dataToWrite.size(); colIndex++) {
      HSSFCell cell = row.createCell(colIndex);
      cell.setCellValue(new HSSFRichTextString(dataToWrite.get(colIndex)));
    }

    workbook.write(fos);
    fos.flush();
    fos.close();
  }