Comments (7)
暂时不支持,目前只支持配置一个委托对数据进行过滤,过滤掉不想要的数据
我之前是把数据导出来在业务代码里判断的
from weihanli.npoi.
好的,谢谢
from weihanli.npoi.
你希望怎么返回错误信息呢?感觉有可能会造成破坏性变更,没想好怎么改,有想法的话欢迎 PR
from weihanli.npoi.
感觉抛异常,或者返回的对象变成excel数据+异常信息,异常信息包含对数据的校验结果,某行某列的数据应该是int,但是实际是string,前一种方式可能会造成获取不到表格数据,后面的方式并不对返回的数据造成实际影响,只是单纯的将错误信息返回。
from weihanli.npoi.
嗯,我想可以加一个方法 ExcelHelper.ToEntityList(string path, out Dictionary<int, List<ValidateResult>> errors)
,原来的方法不进行校验,error 的 key 是 RowIndex
表示行号,value 是 System.ComponentModel.DataAnnotations.ValidationResult
,还需要再想一下,默认走微软的 DataAnnotation
那一套,也可以使用 FluentValiation
或者自己扩展
from weihanli.npoi.
这个可以,我也去用DataAnnotation试一下
from weihanli.npoi.
发布了一个新版本 https://www.nuget.org/packages/WeihanLi.Npoi/2.0.0-preview-20220409-173325,可以试一下
ExcelHelper
增加了 ToEntityListWithValidationResult
(List<TEntity?> EntityList, Dictionary<int, ValidationResult> ValidationResults) ToEntityListWithValidationResult<TEntity>()
默认会使用 DataAnnotation 方式进行数据校验,使用可以参考单元测试
[Theory]
[ExcelFormatData]
public void ValidatorTest(ExcelFormat excelFormat)
{
var list = new List<Job>()
{
new()
{
Id = 1,
Name = "test"
},
new()
};
var bytes = list.ToExcelBytes(excelFormat);
var result = ExcelHelper.ToEntityListWithValidationResult<Job>(bytes, excelFormat);
Assert.Equal(list.Count, result.EntityList.Count);
for (var i = 0; i < list.Count; i++)
{
Assert.True(list[i] == result.EntityList[i]);
}
Assert.Single(result.ValidationResults);
}
[Theory]
[ExcelFormatData]
public void ValidatorTest_CustomValidator(ExcelFormat excelFormat)
{
var list = new List<Job>()
{
new()
{
Id = 1,
Name = "test"
}
};
var validator = new DelegateValidator<Job>(_ => new ValidationResult()
{
Valid = false,
Errors = new Dictionary<string, string[]>() { { "", new[] { "Mock error" } } }
});
var bytes = list.ToExcelBytes(excelFormat);
var result = ExcelHelper.ToEntityListWithValidationResult<Job>(bytes, excelFormat, validator: validator);
Assert.Equal(list.Count, result.EntityList.Count);
for (var i = 0; i < list.Count; i++)
{
Assert.True(list[i] == result.EntityList[i]);
}
Assert.Single(result.ValidationResults);
}
from weihanli.npoi.
Related Issues (20)
- List.Count in the method of ToEntityList<> HOT 2
- 如何实现头部粗体或者不同的颜色的 HOT 4
- `ConfigProfile` feature request
- Hepler/CsvFileHelper.cs(71,13): error CS8652: The feature 'using declarations' is currently in Preview and *unsupported*. To use Preview features, use the 'preview' language version.
- .net core 2.1 的程序 引用该包后 docker编译不通过? HOT 14
- 依賴.net standard HOT 2
- ExcelHelper.ToEntityList<T> ,对象属性包含图片映射时,导入表格无图直接报错 HOT 3
- Add `ToEntities` return `IEnumerable<TEntity>`
- Word template export feature HOT 2
- Add maxColumns and removeEmptyRows parameters to ExcelHelper.ToDataTable() HOT 2
- Support duplicate column names and avoid System.Data.DuplicateNameException HOT 3
- sheetname问题 HOT 6
- ToEntityList 不支持以 Tab 分隔的 csv 文件 HOT 3
- 格式问题 HOT 1
- Open an exist excel and then modify or write to excelFile HOT 9
- 不能识别纯汉字的日期格式 HOT 4
- 中文乱码 HOT 8
- Excel导出超出65536行报错 Invalid row number (65536) outside allowable range (0..65535) HOT 5
- picture HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from weihanli.npoi.