diff --git a/storage/src/main/java/com/zfoo/storage/util/CsvReaderUtils.java b/storage/src/main/java/com/zfoo/storage/util/CsvReaderUtils.java index f27dde9f..1de68c9a 100644 --- a/storage/src/main/java/com/zfoo/storage/util/CsvReaderUtils.java +++ b/storage/src/main/java/com/zfoo/storage/util/CsvReaderUtils.java @@ -24,59 +24,26 @@ import org.apache.commons.csv.CSVRecord; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.util.*; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; /** * @author meiwei666 * @version 4.0 */ -public class CsvReaderUtils { +public abstract class CsvReaderUtils { - /** - * 构建配置表消息头 - * @param iterator - * @param fileName - * @return - */ - private static List getHeaders(Iterator iterator, String fileName) { - // 获取配置表的有效列名称,默认第一行就是字段名称 - var fieldRow = iterator.next(); - if (fieldRow == null) { - throw new RunException("无法获取资源[class:{}]的Excel文件的属性控制列", fileName); - } - //默认第二行字段类型 - var typeRow = iterator.next(); - if (typeRow == null) { - throw new RunException("无法获取资源[class:{}]的Excel文件的类型控制列", fileName); - } - var descRow = iterator.next(); - - List headers = new ArrayList<>(); - for (int i = 0; i < fieldRow.size(); i++) { - String fieldName = fieldRow.get(i); - if (fieldName == null) { - throw new RunException("{}列名不能为空,第{}列没有配置名字", fileName ,i + 1); - } - String filedType = typeRow.get(i); - if (filedType == null) { - throw new RunException("{}列类型不能为空,第{}列没有配置类型", fileName ,i + 1); - } -// String desc = descRecord.get(i); - headers.add(ResourceHeader.valueOf(fieldName, filedType, i )); - } - return headers; - } - - public static ResourceData readResourceDataFromCSV(InputStream input, String fileName){ - CSVParser records = parseCsv(input, fileName); - Iterator iter = records.iterator(); - List headers = getHeaders(iter, fileName); - List> rows = new ArrayList<>(); - while (iter.hasNext()) { - CSVRecord record = iter.next(); - List data = new ArrayList<>(); - for (ResourceHeader header : headers) { - String value = record.get(header.getIndex()); + public static ResourceData readResourceDataFromCSV(InputStream input, String fileName) { + var records = parseCsv(input, fileName); + var iterator = records.iterator(); + var headers = getHeaders(iterator, fileName); + var rows = new ArrayList>(); + while (iterator.hasNext()) { + var record = iterator.next(); + var data = new ArrayList(); + for (var header : headers) { + var value = record.get(header.getIndex()); if (StringUtils.isBlank(value)) { value = StringUtils.EMPTY; } @@ -87,6 +54,39 @@ public class CsvReaderUtils { return ResourceData.valueOf(fileName, headers, rows); } + + /** + * 构建配置表消息头 + */ + private static List getHeaders(Iterator iterator, String fileName) { + // 获取配置表的有效列名称,默认第一行就是字段名称 + var fieldRow = iterator.next(); + if (fieldRow == null) { + throw new RunException("无法获取资源[class:{}]的csv文件的属性控制列", fileName); + } + //默认第二行字段类型 + var typeRow = iterator.next(); + if (typeRow == null) { + throw new RunException("无法获取资源[class:{}]的csv文件的类型控制列", fileName); + } + // 默认第三行为描述,需要的时候再使用 + var descRow = iterator.next(); + + var headers = new ArrayList(); + for (var i = 0; i < fieldRow.size(); i++) { + var fieldName = fieldRow.get(i); + if (fieldName == null) { + throw new RunException("{}列名不能为空,第{}列没有配置名字", fileName, i + 1); + } + var filedType = typeRow.get(i); + if (filedType == null) { + throw new RunException("{}列类型不能为空,第{}列没有配置类型", fileName, i + 1); + } + headers.add(ResourceHeader.valueOf(fieldName, filedType, i)); + } + return headers; + } + private static CSVParser parseCsv(InputStream input, String fileName) { try { return CSVFormat.EXCEL.parse(new InputStreamReader(input)); diff --git a/storage/src/main/java/com/zfoo/storage/util/ExcelReaderUtils.java b/storage/src/main/java/com/zfoo/storage/util/ExcelReaderUtils.java index 41f70769..98aa830c 100644 --- a/storage/src/main/java/com/zfoo/storage/util/ExcelReaderUtils.java +++ b/storage/src/main/java/com/zfoo/storage/util/ExcelReaderUtils.java @@ -20,7 +20,9 @@ import com.zfoo.protocol.util.StringUtils; import com.zfoo.storage.model.resource.ResourceData; import com.zfoo.storage.model.resource.ResourceEnum; import com.zfoo.storage.model.resource.ResourceHeader; -import org.apache.poi.ss.usermodel.*; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import java.io.File; import java.io.IOException; @@ -32,7 +34,7 @@ import java.util.stream.Collectors; * @author meiwei666 * @version 4.0 */ -public class ExcelReaderUtils { +public abstract class ExcelReaderUtils { public static void excelConvertJson(String inputDir, String outputDir) throws IOException { var listFiles = FileUtils.getAllReadableFiles(new File(inputDir)) @@ -61,13 +63,7 @@ public class ExcelReaderUtils { //设置所有列 var headers = getHeaders(iterator, fileName); - // 行数定位到有效数据行,默认是第四行为有效数据行 -// var iterator = sheet.iterator(); -// iterator.next(); -// iterator.next(); -// iterator.next(); - // 从ROW_SERVER这行开始读取数据 - List> rows = new ArrayList<>(); + var rows = new ArrayList>(); while (iterator.hasNext()) { var row = iterator.next(); @@ -87,19 +83,18 @@ public class ExcelReaderUtils { return ResourceData.valueOf(fileName, headers, rows); } - // 只读取代码里写的字段 private static List getHeaders(Iterator iterator, String fileName) { -// var iterator = sheet.iterator(); // 获取配置表的有效列名称,默认第一行就是字段名称 var fieldRow = iterator.next(); if (fieldRow == null) { throw new RunException("无法获取资源[class:{}]的Excel文件的属性控制列", fileName); } - //默认第二行字段类型 + // 默认第二行字段类型 var typeRow = iterator.next(); if (typeRow == null) { throw new RunException("无法获取资源[class:{}]的Excel文件的类型控制列", fileName); } + // 默认第三行为描述,需要的时候再使用 var desRow = iterator.next(); var headerList = new ArrayList(); var cellFieldMap = new HashMap();