This commit is contained in:
Paidax
2025-11-11 17:16:43 +08:00
parent dea071e25f
commit e7d3670c5a
12 changed files with 242 additions and 33 deletions
@@ -7,6 +7,7 @@ import lombok.extern.slf4j.Slf4j;
import org.nutz.lang.util.NutMap;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -18,9 +19,9 @@ import java.util.Map;
* @注释 没有定义的数据对象的读取
*/
@Slf4j
public class NoModelDataListener implements ReadListener<Map<String, Object>> {
public class NoModelDataListener implements ReadListener<Map<Integer, String>> {
private boolean isFirstRow = true;
private boolean firstRow = true;
// 表头数据
@Getter
private List<String> headers = new ArrayList<>();
@@ -29,17 +30,31 @@ public class NoModelDataListener implements ReadListener<Map<String, Object>> {
private List<NutMap> dataList = new ArrayList<>();
@Override
public void invoke(Map<String, Object> rowMap, AnalysisContext context) {
if (isFirstRow) {
headers = new ArrayList<>(rowMap.keySet());
isFirstRow = false;
public void invoke(Map<Integer, String> rowMap, AnalysisContext context) {
if (firstRow) {
// 第一行是表头:按列索引存 header
headers = new ArrayList<>(Collections.nCopies(rowMap.size(), ""));
for (Map.Entry<Integer, String> entry : rowMap.entrySet()) {
headers.set(entry.getKey(), entry.getValue());
}
firstRow = false;
} else {
// 后续行是数据:用 header 作为 key
NutMap nutMap = new NutMap();
nutMap.putAll(rowMap);
for (Map.Entry<Integer, String> entry : rowMap.entrySet()) {
Integer colIndex = entry.getKey();
String value = entry.getValue();
String header = colIndex < headers.size() ? headers.get(colIndex) : "Column" + colIndex;
nutMap.put(header, value);
}
dataList.add(nutMap);
}
}
public List<NutMap> getDataList() {
return dataList;
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
log.info("共读取 {} 行数据(不含表头)", dataList.size());