Excel表格-数据库互导工具
指定Pattern文件-一个规则描述的json文档,基于此规则实现Excel表格与数据库之间的导入导出,校验等功能。
| Date | Version | Content |
|---|---|---|
| V0.1.0 | 2022-7-29 | 初始版本 |
Sample:
"ExcelImport": { // excel导入规则
"SheetName": "", // 工作表名称
"SheetNumber": 0, // 工作表序号
"SkipRow": 3 // 开始行数
}
Sample:
"DbExport": { // Db导出规则
"TableKeyType": "Guid", // 表主键类型 可选 "无","int","long","Guid",
"TableName": "Employee" // 表名称
}
对列进行配置
Sample:
"Patterns": [ // Pattern配置
{
"PropName": "EmployeeName", // 属性名称
"HeaderName": "姓名", // 列标题名称
"PropType": "string", // 属性类型,可选 "string", "DateTime","int","double","bool",
"CellType": "常规", // 单元格类型 可选 "常规","包含注解","包含样式","包含公式","全包含"
"Ignore": false, // 是否忽略
"Order": 0, // 列序号
"Validation": { // 校验配置
...
}
},
配置校验
Sample1:
"Validation": {
"Target": "单元格数值",
"Description": "整数值需要大于2",
"Convention": "普通校验器",
"Expression": "{value}>=2"
}
Sample2:
"Validation": {
"Target": "单元格公式",
"Description": "需要满足正则表达式",
"Convention": "正则表达式校验器",
"Expression": "^ROUND\\(AN\\d+\\+BC\\d+\\+BD\\d+\\+BE\\d+\\+BF\\d+\\+BG\\d+\\+BH\\d+,2\\)$"
}
完整示例请参考 Sample
不需要特别的安装,在此获取ept.exe,或git pull代码后生成可执行文件
e_sqlite3.dllMicrosoft.Data.SqlClient.SNI.dll参数列表:
| 参数 | 含义 | 用法 |
|---|---|---|
| -p | PatternFile | 指定一个Pattern文件(Json), 作为转换的模型文件 |
| -i | Input | 指定一个Excel文件路径,此文件将作为导入数据源 支持Xls或者Xlsx文件 |
| -o | Output | 指定一个路径,或Sql连接字符串作为导出目标 当指定 -d 参数为sqlserver, sqlite, mysql时,需指定为连接字符串; 当指定 -d 参数为excel时,需指定为将要另存的Excel文件路径,支持Xls或者Xlsx文件 |
| -s | Source | 值为excel |
| -d | Destination | 值为excel, sqlserver, sqlite或者mysql |
| -w | WaitAtEnd | 指定时,程序执行完成后,将等待用户输入退出 |
| -h | Help | 查看帮助 |
导出至Sqlite的Sample
.\ept.exe -p .\sample\pattern.json -i .\sample\test.xlsx -o "Data Source=mato.db" -s excel -d sqlite
导出至Excel的Sample
.\ept.exe -p .\sample\pattern.json -i .\sample\test.xlsx -o .\sample\output.xlsx -s excel -d excel

将在-o 参数指定的地址生成数据
生成至Excel

生成至Sqlite

ept.exe 相同目录下新建appsettings.json可自定义配置,若无此文件将采用自定义样式配置,如下:
{
"HeaderDefaultStyle": {
"DefaultFontName": "宋体",
"DefaultFontColor": "#FFFFFF",
"DefaultFontSize": 10,
"DefaultBorderColor": "#000000",
"DefaultBackColor": "#888888"
},
"BodyDefaultStyle": {
"DefaultFontName": "宋体",
"DefaultFontColor": "#000000",
"DefaultFontSize": 10,
"DefaultBorderColor": "#000000",
"DefaultBackColor": "#FFFFFF"
},
"CellComment": {
"DefaultAuthor": "Linxiao"
}
}
检验提供类ValidatorProvider类具有一定的扩展功能,
InitConventions方法对校验行为进行初始化,默认提供RegularExpression,LambdaExpression对应的委托函数分别实现了正则表达式校验和普通表达式校验,重写InitConventions可实现一个自定义方式校验
Sample:
public override Dictionary InitConventions()
{
var defaultConventions = base.InitConventions();
//x 为当前列轮询的字段规则PatternItem对象,
//e 为当前行轮询的Entity对象
//返回ProcessResult作为校验结果
defaultConventions.Add("MyExpression", new ValidateConvention((x, e) =>
{
//再此编写自定义校验功能
//可用 x.PropName(或PropertyTypeMaper(x.PropName)) 获取当前列轮询的字段(Excel表头)名称
//返回ProcessResult作为校验结果,IsValidated设置为true表示校验通过
x.Validation.ProcessResult.IsValidated = true;
return x.Validation.ProcessResult;
}));
return defaultConventions;
}
作者:林小
邮箱:jevonsflash@qq.com
The MIT License (MIT)