日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Magicodes.IE已支持导出Word、Pdf和Html

發(fā)布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Magicodes.IE已支持导出Word、Pdf和Html 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關于Magicodes.IE

導入導出通用庫,通過導入導出DTO模型來控制導入和導出,支持Excel、Word、Pdf和Html。

GitHub地址:https://github.com/xin-lai/Magicodes.IE

特點

  • 需配合相關導入導出的DTO模型使用,支持通過DTO以及相關特性控制導入導出。配置特性即可控制相關邏輯和顯示結果,無需修改邏輯代碼;

  • 導出支持列頭自定義處理以便支持多語言等場景;

  • 導出支持文本自定義過濾或處理;

  • 導入支持中間空行自動跳過;

  • 導入支持自動根據 DTO 生成導入模板,針對必填項將自動標注;?

  • 導入支持數據下拉選擇,目前僅支持枚舉類型;

  • 導入數據支持前后空格以及中間空格處理,允許指定列進行設置;

  • 導入支持模板自動檢查,數據自動校驗,異常統(tǒng)一處理,并提供統(tǒng)一的錯誤封裝,包含異常、模板錯誤和行數據錯誤;?

  • 支持導入表頭位置設置,默認為1;

  • 支持導入列亂序,無需按順序一一對應;

  • 支持導入指定列索引,默認自動識別;

  • 支持將導入Excel進行錯誤標注;

  • 導入支持截止列設置,如未設置則默認遇到空格截止;

  • 支持導出HTML、Word、Pdf,支持自定義導出模板;

    • 導出HTML

  • 導出Word

  • 導出Pdf

  • 導入支持重復驗證;

相關官方Nuget包

聯(lián)系我們

訂閱號

關注“麥扣聊技術”訂閱號可以獲得最新文章、教程、文檔:

QQ群
  • 編程交流群<85318032>

  • 產品交流群<897857351>

文檔官網&官方博客
  • 文檔官網:https://docs.xin-lai.com/

  • 博客:http://www.cnblogs.com/codelove/

其他開源庫
  • https://github.com/xin-lai

  • https://gitee.com/magicodes

VNext

  • 生成導入模板時必填項支持自定義樣式配置

  • CSV支持

  • 導入結果支持生成HTML輸出

更新歷史

2019.9.28

  • 【導出】修改默認的導出HTML、Word、Pdf模板

  • 【導入】添加截斷行的單元測試,以測試中間空格和結尾空格

  • 【導入】將【數據錯誤檢測】和【導入】單元測試的Dto分開,確保全部單元測試通過

  • 【文檔】更新文檔

2019.9.26

  • 【導出】支持導出Word、Pdf、HTML,支持自定義導出模板

  • 【導出】添加相關導出的單元測試

  • 【導入】支持重復驗證,需設置ImporterHeader特性的IsAllowRepeat為false

2019.9.19

  • 【導入】支持截止列設置,如未設置則默認遇到空格截止

  • 【導入】導入支持通過特性設置Sheet名稱

2019.9.18

  • 【導入】重構導入模塊

  • 【導入】統(tǒng)一導入錯誤消息

    • Exception :導入異常信息

    • RowErrors :數據錯誤信息

    • TemplateErrors :模板錯誤信息,支持錯誤分級

    • HasError : 是否存在錯誤(僅當出現異常并且錯誤等級為Error時返回true)

  • 【導入】基礎類型必填自動識別,比如int、double等不可為空類型自動識別,無需額外設置Required

  • 【導入】修改Excel模板的Sheet名稱

  • 【導入】支持導入表頭位置設置,默認為1

  • 【導入】支持列亂序(導入模板的列序號不再需要固定)

  • 【導入】支持列索引設置

  • 【導入】支持將導入的Excel進行錯誤標注,支持多個錯誤

  • 【導入】加強對基礎類型和可為空類型的支持

  • 【EPPlus】由于EPPlus.Core已經不維護,將EPPlus的包從EPPlus.Core改為EPPlus,

2019.9.11

  • 【導入】導入支持自動去除前后空格,默認啟用,可以針對列進行關閉,具體見AutoTrim設置

  • 【導入】導入Dto的字段允許不設置ImporterHeader,支持通過DisplayAttribute特性獲取列名

  • 【導入】導入的Excel移除對Sheet名稱的約束,默認獲取第一個Sheet

  • 【導入】導入增加對中間空格的處理支持,需設置FixAllSpace

  • 【導入】導入完善對日期類型的支持

  • 【導入】完善導入的單元測試

導出 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 List<ExportTestData>() {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 List<ExportTestDataWithAttrs>(){new ExportTestDataWithAttrs(){Text = "啊實打實大蘇打撒",Name="aa",Number =5000,Text2 = "w薩達薩達薩達撒",Text3 = "sadsad打發(fā)打發(fā)士大夫的"},new ExportTestDataWithAttrs(){Text = "啊實打實大蘇打撒",Name="啊實打實大蘇打撒",Number =6000,Text2 = "w薩達薩達薩達撒",Text3 = "sadsad打發(fā)打發(fā)士大夫的"},new ExportTestDataWithAttrs(){Text = "啊實打實速度大蘇打撒",Name="薩達薩達",Number =6000,Text2 = "突然他也讓他人",Text3 = "sadsad打發(fā)打發(fā)士大夫的"},});

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 List<AttrsLocalizationTestData>(){new AttrsLocalizationTestData(){Text = "啊實打實大蘇打撒",Name="aa",Number =5000,Text2 = "w薩達薩達薩達撒",Text3 = "sadsad打發(fā)打發(fā)士大夫的"},new AttrsLocalizationTestData(){Text = "啊實打實大蘇打撒",Name="啊實打實大蘇打撒",Number =6000,Text2 = "w薩達薩達薩達撒",Text3 = "sadsad打發(fā)打發(fā)士大夫的"},new AttrsLocalizationTestData(){Text = "啊實打實速度大蘇打撒",Name="薩達薩達",Number =6000,Text2 = "突然他也讓他人",Text3 = "sadsad打發(fā)打發(fā)士大夫的"},});

導入 Demo

導入特性(ImporterAttribute):

  • HeaderRowIndex:表頭位置

導入列頭特性(ImporterHeader):

  • Name:表頭顯示名稱(不可為空)。

  • Description:表頭添加注釋。

  • Author:注釋作者,默認值為“麥扣”。

  • AutoTrim:自動過濾空格,默認啟用。

  • FixAllSpace:處理掉所有的空格,包括中間空格。默認false。

  • ColumnIndex:列索引,一般不建議設置。

導入結果(ImportResult):

  • Data:IList<T>?導入的數據集合。

  • RowErrors:IList?數據行錯誤。

  • HasError:bool?是否存在導入錯誤。

  • 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

總結

以上是生活随笔為你收集整理的Magicodes.IE已支持导出Word、Pdf和Html的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。