游戏网站建设网,app下载推广,电影网站如何建设会员式,公司网站建设山东导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库#xff0c;并且仍在跟随项目不断地打磨。GitHub地址#xff1a;https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语… 导入导出通用库 Magicodes.ExporterAndImporter为心莱团队封装的导入导出通用库并且仍在跟随项目不断地打磨。GitHub地址https://github.com/xin-lai/Magicodes.ExporterAndImporter目录特点相关官方Nuget包导出 Demo普通导出特性导出列头处理或者多语言支持导入Demo普通模板多数据类型数据验证Docker中使用Dockerfile Demo特点 封装导入导出业务,目前仅支持 Excel有兴趣的小伙伴可以考虑支持 CSV 以及PDF或其他格式的导出配置特性即可控制相关逻辑和显示结果无需修改逻辑代码推荐配合 导入导出DTO 使用导出支持列头自定义处理以便支持多语言等场景导出支持文本自定义过滤或处理导入支持自动根据导入DTO生成导入模板及模板验证导入支持数据验证逻辑导入支持数据下拉选择导入支持注释添加相关官方Nuget包 导出 Demo Demo1-1普通导出public class ExportTestData
{ public string Name1 { get; set; } public string Name2 { get; set; } public string Name3 { get; set; } public string Name4 { get; set; }
} var result await Exporter.Export(filePath, new ListExportTestData()
{ new ExportTestData() { Name1 1, Name2 test, Name3 12, Name4 11, }, new ExportTestData() { Name1 1, Name2 test, Name3 12, Name4 11, }
});Demo1-2特性导出[ExcelExporter(Name 测试, TableStyle Light10)]public class ExportTestDataWithAttrs
{ [ExporterHeader(DisplayName 加粗文本, IsBold true)] public string Text { get; set; } [ExporterHeader(DisplayName 普通文本)] public string Text2 { get; set; } [ExporterHeader(DisplayName 忽略, IsIgnore true)] public string Text3 { get; set; } [ExporterHeader(DisplayName 数值, Format #,##0)] public double Number { get; set; } [ExporterHeader(DisplayName 名称, IsAutoFit true)] public string Name { get; set; }
} var result await Exporter.Export(filePath, new ListExportTestDataWithAttrs() { new ExportTestDataWithAttrs() { Text 啊实打实大苏打撒, Nameaa, Number 5000, Text2 w萨达萨达萨达撒, Text3 sadsad打发打发士大夫的 }, new ExportTestDataWithAttrs() { Text 啊实打实大苏打撒, Name啊实打实大苏打撒, Number 6000, Text2 w萨达萨达萨达撒, Text3 sadsad打发打发士大夫的 }, new ExportTestDataWithAttrs() { Text 啊实打实速度大苏打撒, Name萨达萨达, Number 6000, Text2 突然他也让他人, Text3 sadsad打发打发士大夫的 }, });列头处理或者多语言支持[ExcelExporter(Name 测试, TableStyle Light10)]
public class AttrsLocalizationTestData
{ [ExporterHeader(DisplayName 加粗文本, IsBold true)] public string Text { get; set; } [ExporterHeader(DisplayName 普通文本)] public string Text2 { get; set; } [ExporterHeader(DisplayName 忽略, IsIgnore true)] public string Text3 { get; set; } [ExporterHeader(DisplayName 数值, Format #,##0)] public double Number { get; set; } [ExporterHeader(DisplayName 名称, IsAutoFit true)] public string Name { get; set; }
} ExcelBuilder.Create().WithLocalStringFunc((key) { if (key.Contains(文本)) { return Text; } return 未知语言; }).Build(); var filePath Path.Combine(Directory.GetCurrentDirectory(), testAttrsLocalization.xlsx); if (File.Exists(filePath)) File.Delete(filePath); var result await Exporter.Export(filePath, new ListAttrsLocalizationTestData() { new AttrsLocalizationTestData() { Text 啊实打实大苏打撒, Nameaa, Number 5000, Text2 w萨达萨达萨达撒, Text3 sadsad打发打发士大夫的 }, new AttrsLocalizationTestData() { Text 啊实打实大苏打撒, Name啊实打实大苏打撒, Number 6000, Text2 w萨达萨达萨达撒, Text3 sadsad打发打发士大夫的 }, new AttrsLocalizationTestData() { Text 啊实打实速度大苏打撒, Name萨达萨达, Number 6000, Text2 突然他也让他人, Text3 sadsad打发打发士大夫的 }, });导入特性ImporterHeaderNamestring 表头显示名称(不可为空)。Descriptionstring 表头添加注释。Authorstring 注释作者默认值为X.M。导入结果ImportModelTDataIListT 导入的数据集合。ValidationResultsIListValidationResultModel 数据验证结果。HasValidTemplatebool 模板验证是否通过。数据验证结果ValidationResultModelIndexint 错误数据所在行。ErrorsIDictionarystring, string 整个Excel错误集合。目前仅支持数据验证错误。FieldErrorsIDictionarystring, string 数据验证错误。Demo2-1 普通模板生成模板public class ImportProductDto
{ /// summary /// 产品名称 /// /summary [ImporterHeader(Name 产品名称)] public string Name { get; set; } /// summary /// 产品代码 /// /summary [ImporterHeader(Name 产品代码)] public string Code { get; set; } /// summary /// 产品条码 /// /summary [ImporterHeader(Name 产品条码)] public string BarCode { get; set; } }Demo2-2 多数据类型生成模板public class ImportProductDto
{ /// summary /// 产品名称 /// /summary [ImporterHeader(Name 产品名称)] public string Name { get; set; } /// summary /// 产品代码 /// /summary [ImporterHeader(Name 产品代码)] public string Code { get; set; } /// summary /// 产品条码 /// /summary [ImporterHeader(Name 产品条码)] public string BarCode { get; set; } /// summary /// 客户Id /// /summary [ImporterHeader(Name 客户代码)] public long ClientId { get; set; } /// summary /// 产品型号 /// /summary [ImporterHeader(Name 产品型号)] public string Model { get; set; } /// summary /// 申报价值 /// /summary [ImporterHeader(Name 申报价值)] public double DeclareValue { get; set; } /// summary /// 货币单位 /// /summary [ImporterHeader(Name 货币单位)] public string CurrencyUnit { get; set; } /// summary /// 品牌名称 /// /summary [ImporterHeader(Name 品牌名称)] public string BrandName { get; set; } /// summary /// 尺寸 /// /summary [ImporterHeader(Name 尺寸(长x宽x高))] public string Size { get; set; } /// summary /// 重量 /// /summary [ImporterHeader(Name 重量(KG))] public double Weight { get; set; } /// summary /// 类型 /// /summary [ImporterHeader(Name 类型)] public ImporterProductType Type { get; set; } /// summary /// 是否行 /// /summary [ImporterHeader(Name 是否行)] public bool IsOk { get; set; }
}public enum ImporterProductType
{ [Display(Name 第一)] One, [Display(Name 第二)] Two }Demo2-3 数据验证生成模板必填项表头文本为红色public class ImportProductDto
{ /// summary /// 产品名称 /// /summary [ImporterHeader(Name 产品名称,Description 必填)] [Required(ErrorMessage 产品名称是必填的)] public string Name { get; set; } /// summary /// 产品代码 /// /summary [ImporterHeader(Name 产品代码, Description 最大长度为8)] [MaxLength(8,ErrorMessage 产品代码最大长度为8)] public string Code { get; set; } /// summary /// 产品条码 /// /summary [ImporterHeader(Name 产品条码)] [MaxLength(10, ErrorMessage 产品条码最大长度为10)] [RegularExpression(^\d*$, ErrorMessage 产品条码只能是数字)] public string BarCode { get; set; } /// summary /// 客户Id /// /summary [ImporterHeader(Name 客户代码)] public long ClientId { get; set; } /// summary /// 产品型号 /// /summary [ImporterHeader(Name 产品型号)] public string Model { get; set; } /// summary /// 申报价值 /// /summary [ImporterHeader(Name 申报价值)] public double DeclareValue { get; set; } /// summary /// 货币单位 /// /summary [ImporterHeader(Name 货币单位)] public string CurrencyUnit { get; set; } /// summary /// 品牌名称 /// /summary [ImporterHeader(Name 品牌名称)] public string BrandName { get; set; } /// summary /// 尺寸 /// /summary [ImporterHeader(Name 尺寸(长x宽x高))] public string Size { get; set; } /// summary /// 重量 /// /summary [ImporterHeader(Name 重量(KG))] public double Weight { get; set; } /// summary /// 类型 /// /summary [ImporterHeader(Name 类型)] public ImporterProductType Type { get; set; } /// summary /// 是否行 /// /summary [ImporterHeader(Name 是否行)] public bool IsOk { get; set; }
}
public enum ImporterProductType
{ [Display(Name 第一)] One, [Display(Name 第二)] Two }Docker中使用# 安装libgdiplus库用于Excel导出
RUN apt-get update apt-get install -y libgdiplus libc6-dev
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dllDockerfile DemoFROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
# 安装libgdiplus库用于Excel导出
RUN apt-get update apt-get install -y libgdiplus libc6-dev
RUN ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
WORKDIR /app
EXPOSE 80 FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY [src/web/Admin.Host/Admin.Host.csproj, src/web/Admin.Host/]
COPY [src/web/Admin.Web.Core/Admin.Web.Core.csproj, src/web/Admin.Web.Core/]
COPY [src/application/Admin.Application/Admin.Application.csproj, src/application/Admin.Application/]
COPY [src/core/Magicodes.Admin.Core/Magicodes.Admin.Core.csproj, src/core/Magicodes.Admin.Core/]
COPY [src/data/Magicodes.Admin.EntityFrameworkCore/Magicodes.Admin.EntityFrameworkCore.csproj, src/data/Magicodes.Admin.EntityFrameworkCore/]
COPY [src/core/Magicodes.Admin.Core.Custom/Magicodes.Admin.Core.Custom.csproj, src/core/Magicodes.Admin.Core.Custom/]
COPY [src/application/Admin.Application.Custom/Admin.Application.Custom.csproj, src/application/Admin.Application.Custom/]
RUN dotnet restore src/web/Admin.Host/Admin.Host.csproj
COPY . .
WORKDIR /src/src/web/Admin.Host
RUN dotnet build Admin.Host.csproj -c Release -o /app FROM build AS publish
RUN dotnet publish Admin.Host.csproj -c Release -o /app FROM base AS final
WORKDIR /app
COPY --frompublish /app .
ENTRYPOINT [dotnet, Magicodes.Admin.Web.Host.dll]