静态页面做网站,vi设计风格有哪些,wordpress支付宝红包,淄博微信网站建设关于Magicodes.IE导入导出通用库#xff0c;通过导入导出DTO模型来控制导入和导出#xff0c;支持Excel、Word、Pdf和Html。GitHub地址#xff1a;https://github.com/xin-lai/Magicodes.IE特点需配合相关导入导出的DTO模型使用#xff0c;支持通过DTO以及相关特性控制导入… 关于Magicodes.IE导入导出通用库通过导入导出DTO模型来控制导入和导出支持Excel、Word、Pdf和Html。GitHub地址https://github.com/xin-lai/Magicodes.IE特点需配合相关导入导出的DTO模型使用支持通过DTO以及相关特性控制导入导出。配置特性即可控制相关逻辑和显示结果无需修改逻辑代码导出支持列头自定义处理以便支持多语言等场景导出支持文本自定义过滤或处理导入支持中间空行自动跳过导入支持自动根据 DTO 生成导入模板,针对必填项将自动标注 导入支持数据下拉选择目前仅支持枚举类型导入数据支持前后空格以及中间空格处理允许指定列进行设置导入支持模板自动检查数据自动校验异常统一处理并提供统一的错误封装包含异常、模板错误和行数据错误 支持导入表头位置设置默认为1支持导入列乱序无需按顺序一一对应支持导入指定列索引默认自动识别支持将导入Excel进行错误标注导入支持截止列设置如未设置则默认遇到空格截止支持导出HTML、Word、Pdf支持自定义导出模板导出HTML导出Word导出Pdf导入支持重复验证相关官方Nuget包联系我们订阅号关注“麦扣聊技术”订阅号可以获得最新文章、教程、文档QQ群编程交流群85318032产品交流群897857351文档官网官方博客文档官网https://docs.xin-lai.com/博客http://www.cnblogs.com/codelove/其他开源库https://github.com/xin-laihttps://gitee.com/magicodesVNext生成导入模板时必填项支持自定义样式配置CSV支持导入结果支持生成HTML输出更新历史2019.9.28【导出】修改默认的导出HTML、Word、Pdf模板【导入】添加截断行的单元测试以测试中间空格和结尾空格【导入】将【数据错误检测】和【导入】单元测试的Dto分开确保全部单元测试通过【文档】更新文档2019.9.26【导出】支持导出Word、Pdf、HTML支持自定义导出模板【导出】添加相关导出的单元测试【导入】支持重复验证需设置ImporterHeader特性的IsAllowRepeat为false2019.9.19【导入】支持截止列设置如未设置则默认遇到空格截止【导入】导入支持通过特性设置Sheet名称2019.9.18【导入】重构导入模块【导入】统一导入错误消息Exception 导入异常信息RowErrors 数据错误信息TemplateErrors 模板错误信息支持错误分级HasError : 是否存在错误仅当出现异常并且错误等级为Error时返回true【导入】基础类型必填自动识别比如int、double等不可为空类型自动识别无需额外设置Required【导入】修改Excel模板的Sheet名称【导入】支持导入表头位置设置默认为1【导入】支持列乱序导入模板的列序号不再需要固定【导入】支持列索引设置【导入】支持将导入的Excel进行错误标注支持多个错误【导入】加强对基础类型和可为空类型的支持【EPPlus】由于EPPlus.Core已经不维护将EPPlus的包从EPPlus.Core改为EPPlus2019.9.11【导入】导入支持自动去除前后空格默认启用可以针对列进行关闭具体见AutoTrim设置【导入】导入Dto的字段允许不设置ImporterHeader支持通过DisplayAttribute特性获取列名【导入】导入的Excel移除对Sheet名称的约束默认获取第一个Sheet【导入】导入增加对中间空格的处理支持需设置FixAllSpace【导入】导入完善对日期类型的支持【导入】完善导入的单元测试导出 DemoDemo1-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打发打发士大夫的},});
Demo1-3列头处理或者多语言支持[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打发打发士大夫的},});
导入 Demo导入特性ImporterAttributeHeaderRowIndex表头位置导入列头特性ImporterHeaderName表头显示名称(不可为空)。Description表头添加注释。Author注释作者默认值为“麦扣”。AutoTrim自动过滤空格默认启用。FixAllSpace处理掉所有的空格包括中间空格。默认false。ColumnIndex列索引一般不建议设置。导入结果ImportResultDataIListT 导入的数据集合。RowErrorsIList 数据行错误。HasErrorbool 是否存在导入错误。Exception异常信息TemplateErrors模板错误信息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.dll
Dockerfile Demo