导入导出通用库,支持Dto导入导出、模板导出、花式导出以及动态导出,支持Excel、Csv、Word、Pdf和Html。
具体见:https://dev.azure.com/xinlaiopencode/Magicodes.IE/_build?definitionId=4&_a=summary
其他教程见下文或单元测试
[Fact(DisplayName = "DTO导出支持动态类型")]
public async Task ExportAsByteArraySupportDynamicType_Test()
{
IExporter exporter = new ExcelExporter();
var filePath = GetTestFilePath($"{nameof(ExportAsByteArraySupportDynamicType_Test)}.xlsx");
DeleteFile(filePath);
var source = GenFu.GenFu.ListOf<ExportTestDataWithAttrs>();
string fields = "text,number,name";
var shapedData = source.ShapeData(fields) as ICollection<ExpandoObject>;
var result = await exporter.ExportAsByteArray<ExpandoObject>(shapedData);
result.ShouldNotBeNull();
result.Length.ShouldBeGreaterThan(0);
File.WriteAllBytes(filePath, result);
File.Exists(filePath).ShouldBeTrue();
}
/// <summary>
/// 性别
/// </summary>
[ImporterHeader(Name = "性别")]
[Required(ErrorMessage = "性别不能为空")]
[ValueMapping(text: "男", 0)]
[ValueMapping(text: "女", 1)]
public Genders Gender { get; set; }
[AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
public class GenderLocalAttribute : ValueMappingsBaseAttribute
{
public override Dictionary<string, object> GetMappings(PropertyInfo propertyInfo)
{
var res= new Dictionary<string, object>();
res.Add("男",0);
res.Add("女",1);
return res;
}
}
/// <summary>
/// 性别
/// </summary>
[ImporterHeader(Name = "性别")]
[Required(ErrorMessage = "性别不能为空")]
[GenderLocal]
public Genders Gender { get; set; }
支持枚举和Bool类型的导入数据验证项的生成,以及相关数据转换
枚举默认情况下会自动获取枚举的描述、显示名、名称和值生成数据项
/// <summary>
/// 学生状态 正常、流失、休学、勤工俭学、顶岗实习、毕业、参军
/// </summary>
public enum StudentStatus
{
/// <summary>
/// 正常
/// </summary>
[Display(Name = "正常")]
Normal = 0,
/// <summary>
/// 流失
/// </summary>
[Description("流水")]
PupilsAway = 1,
/// <summary>
/// 休学
/// </summary>
[Display(Name = "休学")]
Suspension = 2,
/// <summary>
/// 勤工俭学
/// </summary>
[Display(Name = "勤工俭学")]
WorkStudy = 3,
/// <summary>
/// 顶岗实习
/// </summary>
[Display(Name = "顶岗实习")]
PostPractice = 4,
/// <summary>
/// 毕业
/// </summary>
[Display(Name = "毕业")]
Graduation = 5,
/// <summary>
/// 参军
/// </summary>
[Display(Name = "参军")]
JoinTheArmy = 6,
}
bool类型默认会生成“是”和“否”的数据项
如果已设置自定义值映射,则不会生成默认选项
支持excel多Sheet导入;
支持Excel模板导出,JSON动态导出,并且支持图片渲染
渲染语法如下所示:
{{Company}} //单元格渲染
{{Table>>BookInfos|RowNo}} //表格渲染开始语法
{{Remark|>>Table}}//表格渲染结束语法
{{Image::ImageUrl?Width=50&Height=120&Alt=404}} //图片渲染
{{Image::ImageUrl?w=50&h=120&Alt=404}} //图片渲染
{{Image::ImageUrl?Alt=404}} //图片渲染
{{Formula::AVERAGE?params=G4:G6}} //公式渲染
{{Formula::SUM?params=G4:G6&G4}} //公式渲染
后续将支持自定义管道。
支持Excel导入模板生成标注
支持Excel图片导入导出
支持多个实体导出多个Sheet
支持使用System.ComponentModel.DataAnnotations命名空间下的部分特性来控制导入导出 #63
支持在ASP.NET Core Web API 中使用自定义格式化程序导出Excel、Pdf、Csv等内容,具体见教程 #64
支持分栏、分sheet、追加rows导出
exporter.Append(list1).SeparateByColumn().Append(list2).ExportAppendData(filePath);
具体见上面教程《Magicodes.IE之花式导出》
[ExporterHeader(Width = 100)]
public DateTime Time3 { get; set; }
Excel导出支持HeaderRowIndex,在ExcelExporterAttribute导出特性类中添加HeaderRowIndex属性,方便导出时去指定从第一行开始导出。
Excel生成导入模板支持内置数据验证
对于内置数据验证的支持可通过IsInterValidation属性开启,并且需要注意的是仅支持MaxLengthAttribute、 MinLengthAttribute、 StringLengthAttribute、 RangeAttribute支持对内置数据验证的开启操作。 支持对输入提示的展示操作:
订阅号
关注“麦扣聊技术”订阅号可以获得最新文章、教程、文档,并且加入微信生态群:
QQ群
文档官网&官方博客
其他开源库
Become a financial contributor and help us sustain our community. [Contribute]
Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型