У меня есть код для чтения значений из файла Excel с использованием Apache POI, содержимое этого файла Excel представляет собой большую таблицу с несколькими столбцами и множеством строк, и есть много файлов Excel с одинаковой структурой (количество столбцов)и иногда могут иметь разные имена столбцов и разные значения столбцов.
Одно из моих требований - объединить все данные в два разных типа данных, один из них - числовые данные типа Float, а другой - текстовое значение в виде строки.
Вопрос 1: Как передать эту логику в файл свойств, чтобы каждый раз, когда мне нужно было проанализировать файл Excel, он мог взять внешний файл с правильным набором данных для каждого столбца?
Вопрос 2: В моем подходе ниже я установил позицию столбца в качестве ключа для определения позиции, но я думаю, что гораздо лучше, чем иметь числовое значение, иметь имя столбца в качестве ключа, в этом случае быстреепрочитать файл свойств и установить значение типа данных в зависимости от имени столбца.
В настоящее время я пришел с нижеприведенной логикой, чтобы исправить положение столбца с его типом данных String или Float, и это хорошо для одного конкретного файла Excel.
String filePath;
String fileProcessingType;
Map<Integer, List<MergeCellRange>> mergeCellMap = new HashMap<>();
Map<Integer, String> columnHeaderMap = new HashMap<>(););
static NavigableMap<Integer, String> columnTypeMap = null; // map is used to identify the column
// types of each parameter
static {
columnTypeMap = new TreeMap<Integer, String>();
columnTypeMap.put(0, "String");
columnTypeMap.put(1, "String"); // 1 TimeStamp as String
columnTypeMap.put(2, "String"); // 2-66 String
columnTypeMap.put(66, "String"); // 66 String
columnTypeMap.put(67, "Float"); // 67-88 String
columnTypeMap.put(89, "String"); // 89-90 String
columnTypeMap.put(113, "String"); // 114....
}
Так что моя идея состоит в том, чтобыиметь файл свойств, например:
Column0=String
Column1=String
Column2=Float
Column3=String
Column4=Float
Column5=Float
Column6=String
...
, а затем выбрать его, вызывая файл свойств:
FileInputStream newFile = new FileInputStream ("dataType.properties");
Properties mappingFile = new Properties();
mappingFile.load(newFile);
mappingFile.load(newFile);
List = mappingFile.getProperties().list(System.out);
static NavigableMap<List> columnTypeMap = null;
// map is used to identify the column