public class MetadataTools extends Object
| 构造器和说明 |
|---|
MetadataTools() |
| 限定符和类型 | 方法和说明 |
|---|---|
static List<CellRule> |
parseCellRules(String jsonString)
解析单元格规则
|
static List<List<CellValueCondition.Item>> |
parseCellValueCondition(String jsonString)
解析单元格值的判断条件
|
static List<CopyConcat> |
parseCopyConcatFields(String jsonString) |
static List<FieldInfo> |
parseFieldInfoByRows(org.apache.poi.ss.usermodel.Sheet sheet,
IndexRangeCondition fieldRows)
解析字段列表配置
星号开头或(*)结尾的字段为必填字段: [*name] or [name(*)] |
static List<FieldInfo> |
parseFieldInfoByText(String text)
解析字段列表配置
星号开头或(*)结尾的字段为必填字段: [*name] or [name(*)] |
static List<ColumnInfo> |
parseHeaders(org.apache.poi.ss.usermodel.Sheet sheet,
IndexRangeCondition headerRows,
List<FieldInfo> fieldInfos)
解析表头数据
星号开头或(*)结尾的字段为必填字段: [* 姓名] or [姓名 (*)] |
static XMetadata |
parseProperties(Properties properties)
解析XMetadata
MetadataTools.parseProperties(PropertyTools.load(filePath)); ## SheetIndex从1开始, 行号从1开始, 列号从A开始 ## 字段对应关系, field.names/field.rows必填其一 ## 字段列表 # field.names = *id|*name|positive|height||birthday|gender|subsidy ## 字段行 field.rows = 5 ## 跳过的行数(不配置时默认取字段行或标题行的下一行) # skip.rows = 2 ## 标题行号,从1开始 header.rows = 2-4 ## 页脚行号,从1开始,只对导出生效 ## 导入时每个excel的页脚位置有可能不一样, 所以导入不能指定页脚行, 只能在导入之前把页脚删掉 ## 如果页脚有公式, 那么数据行必须至少2行, 公式的范围必须包含这两行数据, 如SUM($E$5:E6), 而不能是SUM($E$5:E5), 否则公式不会计算 footer.rows = 7-9 ## 包含指定关键字时跳过此行 ## A列为空, 或B列包含小计且H列包含元, 或B列包含总计且H列包含元 # skip.row.when.contains = { A:"NULL" }, { B:"小计", H:"元" }, { B:"总计", H:"元" } ## 加载哪些Sheet, sheet.index/sheet.name必填其一 ## 配置规则: * 表示全部 ## 配置规则: 1|2|5-8|12 ## 配置规则: ! |
static Map<String,CellRule> |
parseRules(org.apache.poi.ss.usermodel.Workbook wb,
String sheetName)
从excel中读取转换规则
4列, 顺序为: 名称|KEY|类型|规则, 例如: 名称 KEY 类型 规则 整数 int number int 长整数 long number long 浮点数 double number double 布尔值 boolean map true:是|Y|1, false:否|N|0 日期 date date yyyy-MM-dd 时间 time date HH:mm:ss 时分 hhmm date HH:mm 性别 gender map 0:未知, 1:男, 2:女 |
static Map<String,CellRule> |
parseRules(org.apache.poi.ss.usermodel.Workbook wb,
String sheetName,
String columnFields,
int skipRows)
从excel中读取转换规则
|
public static XMetadata parseProperties(Properties properties)
## SheetIndex从1开始, 行号从1开始, 列号从A开始
## 字段对应关系, field.names/field.rows必填其一
## 字段列表
# field.names = *id|*name|positive|height||birthday|gender|subsidy
## 字段行
field.rows = 5
## 跳过的行数(不配置时默认取字段行或标题行的下一行)
# skip.rows = 2
## 标题行号,从1开始
header.rows = 2-4
## 页脚行号,从1开始,只对导出生效
## 导入时每个excel的页脚位置有可能不一样, 所以导入不能指定页脚行, 只能在导入之前把页脚删掉
## 如果页脚有公式, 那么数据行必须至少2行, 公式的范围必须包含这两行数据, 如SUM($E$5:E6), 而不能是SUM($E$5:E5), 否则公式不会计算
footer.rows = 7-9
## 包含指定关键字时跳过此行
## A列为空, 或B列包含小计且H列包含元, 或B列包含总计且H列包含元
# skip.row.when.contains = { A:"NULL" }, { B:"小计", H:"元" }, { B:"总计", H:"元" }
## 加载哪些Sheet, sheet.index/sheet.name必填其一
## 配置规则: * 表示全部
## 配置规则: 1|2|5-8|12
## 配置规则: !1 表示排除第1个
## 配置规则: !1|3|5 表示排除第1/3/5个
# sheet.index = !1
## 配置规则: * 表示全部
## 配置规则: 开发|测试
## 配置规则: !说明|描述 表示排除
sheet.name = !说明
## 页签名称填充至哪个字段
sheet.name.fill.to = dept
## 字段转换规则(支持多个转换规则)
rules.rate = { clear:"[^\\.\\d]" }, { number:"int" }, { ignoreIllegalValue:true }, { rate:100 }
rules.tags = { split:"|" }
rules.positive = { map:{ true:"已转正|是|Y", false:"未转正|否|N" } }
rules.gender = { map:{ UNKNOWN:"未知|0", MALE:"男|1", FEMALE:"女|2" } }
rules.birthday = { date:"yyyy/MM/dd" }
## 将多个字段复制合并到一个字段
copy.concat = { keywords:"userName,nickName,deptName" }
properties - 配置内容public static List<CellRule> parseCellRules(String jsonString)
jsonString - JSON字符串public static List<List<CellValueCondition.Item>> parseCellValueCondition(String jsonString)
jsonString - JSON字符串: { A:"NULL" }, { B:"小计", H:"元" }, { B:"总计", H:"元" }public static List<CopyConcat> parseCopyConcatFields(String jsonString)
public static List<FieldInfo> parseFieldInfoByText(String text)
text - 配置内容public static List<FieldInfo> parseFieldInfoByRows(org.apache.poi.ss.usermodel.Sheet sheet, IndexRangeCondition fieldRows)
sheet - SheetfieldRows - 字段数据所在的行public static List<ColumnInfo> parseHeaders(org.apache.poi.ss.usermodel.Sheet sheet, IndexRangeCondition headerRows, List<FieldInfo> fieldInfos)
sheet - SheetheaderRows - 表头数据所在的行fieldInfos - 字段数据public static Map<String,CellRule> parseRules(org.apache.poi.ss.usermodel.Workbook wb, String sheetName)
名称 KEY 类型 规则
整数 int number int
长整数 long number long
浮点数 double number double
布尔值 boolean map true:是|Y|1, false:否|N|0
日期 date date yyyy-MM-dd
时间 time date HH:mm:ss
时分 hhmm date HH:mm
性别 gender map 0:未知, 1:男, 2:女
wb - Excel文件对象sheetName - Sheet名称Copyright © 2020. All rights reserved.