【问题标题】:Write rows to Excel through array通过数组将行写入Excel
【发布时间】:2016-05-16 21:28:16
【问题描述】:

所以我目前有这段代码通过一个while循环并从“结果集对象”(JDBC东西)中读取以下字段。

要读取和填充的字段:eNumber、eName。

while (rs.next()) {

        ArrayList<String> eRow = new ArrayList<String>();

        String eNumber = rs.getString("ENTRYNUMBER");
        String eventName = rs.getString("EVENTNAME");
        //String 
        System.out.println("entryNumber: " + eNumber + "\t" + "eventName: " +eName );

        eRow.add(eNumber);
        eRow.add(eName);
}

我的问题 - 如何将这两个变量写入同一行的两个不同单元格,然后在 while 循环中重复?然后导出到excel。我想我需要一个数组,但在那之后我卡住了。

例如:

【问题讨论】:

    标签: java excel loops arraylist while-loop


    【解决方案1】:

    这行得通吗?

    eRow.add(eNumber+","+eName);
    

    【讨论】:

    • 需要将 eRow 写入 excel 单元格。你能帮忙吗?
    【解决方案2】:

    您需要将两者都添加到同一个索引中,可能使用分隔符:

    eRow.add(eNumber + '#' + eName); // just chose '#' as unlikely to be used
    

    然后您可以使用eRow.toArray() 方法将数组转置为单个列,最后使用 Text to Columns 再次拆分数据。

    或者您可以遍历数组列表(预先警告,我 无用 作为 java,所以这可能不会真正运行,但应该让您了解我的意思):

    // ... your code
    
    String[] splitVals;
    
    for (int i = 1; i <= eRow.Count; i++){
        splitVals = eRow[i].Split('#');
        setCellValue(splitVals[0], i, 1);
        setCellValue(splitVals[1], i, 2);
    }
    
    // ... some more code ...
    
    public void setCellValue(String val, int row, int col) {
        if (!this.isLoaded) {
            return;
        }
        Dispatch cellRef = Dispatch.invoke(activeSheet, "Cells", Dispatch.Get, new Object[]{++row, ++col}, new int[1]).toDispatch();
        Dispatch.put(cellRef, "Value", val);
    }
    

    【讨论】:

      【解决方案3】:

      您可能希望按如下方式重新编写代码。

      ArrayList<HashMap<String, String>> eRow = new ArrayList<HashMap<String, String>>();
      while (rs.next()) {
              String eNumber = rs.getString("ENTRYNUMBER");
              String eName = rs.getString("EVENTNAME");
              //String 
              System.out.println("entryNumber: " + eNumber + "\t" + "eventName: " +eName );
      
              HashMap<String, String> row = new HashMap<String, String>();
              row.put(eNumber, eName);
              eRow.add(row);
      }
      

      编辑 1: 您可以遍历您的 eRow 并将值写入 cvs 文件,如下所示

      FileWriter fw = new FileWriter("file.csv");
      for (HashMap<String, String> map : eRow)
      {
           for (Entry<String, String> entry : map.entrySet())
           {
               fw.write(entry.getKey() + "," + entry.getValue() + " \n");
      

      【讨论】:

      • 会试试这个。如何将 eRow 写入 Excel 单元格?
      • 您能以正确的格式将其添加到您的答案中吗?评论没有空格。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-18
      • 2019-01-09
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      相关资源
      最近更新 更多