Java 如何使用一些自定义配置设置属性文件

Java 如何使用一些自定义配置设置属性文件,java,properties-file,Java,Properties File,我有一个使用ApachePOI从excel文件读取值的代码,该excel文件的内容是一个包含多列和多行的大表,有许多excel文件具有相同的结构(列数),有时可能有不同的列名和不同的列值 我的要求之一是以两种不同的数据类型接收所有数据,一种是数字数据,它是浮点类型,另一种是文本值作为字符串 问题1:如何将此逻辑传递到属性文件中,这样每次我需要解析excel文件时,它都可以获取外部文件,并为每个列提供正确的数据类型集 问题2:在下面的方法中,我将列位置设置为标识位置的键,但我认为使用列名称作为键比

我有一个使用ApachePOI从excel文件读取值的代码,该excel文件的内容是一个包含多列和多行的大表,有许多excel文件具有相同的结构(列数),有时可能有不同的列名和不同的列值

我的要求之一是以两种不同的数据类型接收所有数据,一种是数字数据,它是浮点类型,另一种是文本值作为字符串

问题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....
    }
然后调用属性文件将其选中:

FileInputStream newFile=newfileinputstream(“dataType.properties”)

Properties映射文件=新属性();
mappingFile.load(newFile);
mappingFile.load(newFile);
List=mappingFile.getProperties().List(System.out);
静态NavigableMap columnTypeMap=null;
//映射用于标识列
试试(FileInputStream newFile=newfileinputstream(“dataType.properties”)){
属性映射文件=新属性();
mappingFile.load(newFile);
mappingFile.forEach((c,t)->{
columnTypeMap.put(Integer.parseInt((String)c).substring(“Column.length()),(String)t);
});
}
捕获(例外情况除外){
系统错误打印项次(ex);
}
PS:你可以把你的属性写成

00=String
01=Float
02=...
并将映射部分缩减为

columnTypeMap.put(Integer.parseInt((String)c),(String)t);
看一看 . 它仍然为您解决了一些基本问题:打开并解析属性文件,并按键提供其内容。示例可在文档中找到。

首先,您可以查看

如果这对你不起作用,我建议你看看。您可以获取文件或中所有可用属性的列表。在知道预期的数据类型后,处理单元格非常简单:

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
00=String
01=Float
02=...