You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Fillo API读取同工作表中重名列的指定列数据?

解决Fillo API读取同工作表中同名列数据的问题

我明白你遇到的困扰了——当工作表里存在多个同名的Column2列时,Fillo的getField("Column2")只会返回第一个匹配列的数据,没法获取第二个。这是因为Fillo按列名查找的逻辑是返回第一个匹配项,针对这种情况,我们可以通过列索引的方式来区分同名列,下面是具体的解决方案:


方法一:硬编码列索引获取指定列

如果你已经明确知道第二个Column2所在的列索引(索引从0开始计数),可以直接用getField(int index)方法来获取数据。假设你的工作表结构是6列,表头依次为Column1|Column2|Column3|Column1|Column2|Column3,那么第二个Column2的索引是4,修改代码如下:

Fillo fillo = new Fillo();
Connection connection = fillo.getConnection("TNK.xlsx");
String strQuery = "Select * from TNK ";
Recordset recordset = connection.executeQuery(strQuery);

while (recordset.next()) {
    // 获取第一个Column2(索引1)
    String firstColumn2 = recordset.getField(1);
    // 获取第二个Column2(索引4)
    String secondColumn2 = recordset.getField(4);
    
    System.out.println("第一个Column2数据:" + firstColumn2);
    System.out.println("第二个Column2数据:" + secondColumn2);
}

recordset.close();
connection.close();

方法二:动态遍历列名,自动匹配所有同名列

如果不确定同名列的数量或索引位置,可以先遍历所有列,收集所有名为Column2的列索引,再逐个获取对应的数据,这种方式更灵活:

import java.util.ArrayList;
import java.util.List;

Fillo fillo = new Fillo();
Connection connection = fillo.getConnection("TNK.xlsx");
String strQuery = "Select * from TNK ";
Recordset recordset = connection.executeQuery(strQuery);

// 收集所有名为Column2的列索引
List<Integer> column2Indices = new ArrayList<>();
int totalColumns = recordset.getFieldCount();
for (int i = 0; i < totalColumns; i++) {
    String columnName = recordset.getFieldName(i);
    if ("Column2".equals(columnName)) {
        column2Indices.add(i);
    }
}

// 遍历每一行,获取所有Column2列的数据
while (recordset.next()) {
    System.out.println("当前行的所有Column2数据:");
    for (int index : column2Indices) {
        String columnValue = recordset.getField(index);
        System.out.println("- " + columnValue);
    }
}

recordset.close();
connection.close();

补充说明

Fillo的官方文档确实比较匮乏,不过它的Recordset类提供了几个关键方法来处理这类场景:

  • getFieldCount():返回当前结果集的总列数
  • getFieldName(int index):返回指定索引位置的列名
  • getField(int index):返回指定索引位置的字段值

通过组合这些方法,就能轻松处理同名列的读取需求。

内容的提问来源于stack exchange,提问作者ThienNguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:53:08