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.dll
Microsoft.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<string, ValidateConvention> 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;
}
作者:林小
The MIT License (MIT)