commit
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user