ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法

 更新時間:2020-06-14 00:02:02   作者:佚名   我要評論(0)

說明


本章主要說明如何使用Magicodes.IE.Csv進行Csv導入導出.
關于Magicodes.IE


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

說明

本章主要說明如何使用Magicodes.IE.Csv進行Csv導入導出.

關于Magicodes.IE

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

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

主要步驟

1.安裝包Magicodes.IE.Csv

Install-Package Magicodes.IE.Csv

2.使用Magicodes.IE.Csv導出Csv

通過如下代碼片段我們將導出的內容通過相應的特性做出相應的處理.

ExporterHeaderAttribute

  • DisplayName: 顯示名稱
  • Format: 格式化
  • IsIgnore: 是否忽略
  public class ExportTestDataWithAttrs
  {
    [ExporterHeader(DisplayName = "文本")]
    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 decimal Number { get; set; }
    [ExporterHeader(DisplayName = "名稱", IsAutoFit = true)]
    public string Name { get; set; }

    /// <summary>
    /// 時間測試
    /// </summary>
    [ExporterHeader(DisplayName = "日期1", Format = "yyyy-MM-dd")]
    public DateTime Time1 { get; set; }

    /// <summary>
    /// 時間測試
    /// </summary>
    [ExporterHeader(DisplayName = "日期2", Format = "yyyy-MM-dd HH:mm:ss")]
    public DateTime? Time2 { get; set; }

    public DateTime Time3 { get; set; }

    public DateTime Time4 { get; set; }

    /// <summary>
    /// 長數值測試
    /// </summary>
    [ExporterHeader(DisplayName = "長數值", Format = "#,##0")]
    public long LongNo { get; set; }
  }

通過DTO導出

    public async Task ExportHeaderAsByteArray_Test()
    {
      IExporter exporter = new CsvExporter();

      var filePath = GetTestFilePath($"{nameof(ExportHeaderAsByteArray_Test)}.csv");

      DeleteFile(filePath);

      var result = await exporter.ExportHeaderAsByteArray(GenFu.GenFu.New<ExportTestDataWithAttrs>());
    }

3.使用Magicodes.IE.Csv導入Csv

對于csv導入我們可以通過,ImporterHeader Name屬性去對應我們的Dto屬性.并且可以通過ValueMapping對枚舉類型進行相關的映射,并向我們返回相對應的值

    public async Task StudentInfoImporter_Test()
    {
      var filePath = Path.Combine(Directory.GetCurrentDirectory(), "TestFiles", "Import", "學生基礎數據導入.csv");
      var import = await Importer.Import<ImportStudentDto>(filePath);
    }
 /// <summary>
  /// 導入學生數據Dto
  /// </summary>
  public class ImportStudentDto
  {
    /// <summary>
    ///   序號
    /// </summary>
    [ImporterHeader(Name = "序號")]
    public long SerialNumber { get; set; }

    /// <summary>
    ///   學籍號
    /// </summary>
    [ImporterHeader(Name = "學籍號")]
    public string StudentCode { get; set; }
    /// <summary>
    ///   姓名
    /// </summary>
    [ImporterHeader(Name = "姓名")]
    public string Name { get; set; }

    /// <summary>
    ///   身份證號碼
    /// </summary>
    [ImporterHeader(Name = "身份證號")]
    public string IdCard { get; set; }

    /// <summary>
    ///   性別
    /// </summary>
    [ImporterHeader(Name = "性別")]
    [ValueMapping("男", 0)]
    [ValueMapping("女", 1)]
    public Genders Gender { get; set; }

    /// <summary>
    ///   家庭地址
    /// </summary>
    [ImporterHeader(Name = "家庭住址")]
    public string Address { get; set; }

    /// <summary>
    ///   家長姓名
    /// </summary>
    [ImporterHeader(Name = "家長姓名")]
    public string Guardian { get; set; }

    /// <summary>
    ///   家長聯系電話
    /// </summary>
    [ImporterHeader(Name = "家長聯系電話")]
    public string GuardianPhone { get; set; }

    /// <summary>
    ///   學號
    /// </summary>
    [ImporterHeader(Name = "學號")]
    public string StudentNub { get; set; }

    /// <summary>
    ///   宿舍號
    /// </summary>
    [ImporterHeader(Name = "宿舍號")]
    public string DormitoryNo { get; set; }

    /// <summary>
    ///   QQ
    /// </summary>
    [ImporterHeader(Name = "QQ號")]
    public string QQ { get; set; }

    /// <summary>
    ///   民族
    /// </summary>
    [ImporterHeader(Name = "民族")]
    public string Nation { get; set; }

    /// <summary>
    ///   戶口性質
    /// </summary>
    [ImporterHeader(Name = "戶口性質")]
    public string HouseholdType { get; set; }

    /// <summary>
    ///   聯系電話
    /// </summary>
    [ImporterHeader(Name = "學生聯系電話")]
    public string Phone { get; set; }

    /// <summary>
    ///   狀態
    ///   測試可為空的枚舉類型
    /// </summary>
    [ImporterHeader(Name = "狀態")] 
    public StudentStatus? Status { get; set; }

    /// <summary>
    ///   備注
    /// </summary>
    [ImporterHeader(Name = "備注")]
    public string Remark { get; set; }

    /// <summary>
    ///   是否住校(宿舍)
    /// </summary>
    [ImporterHeader(IsIgnore = true)]
    public bool? IsBoarding { get; set; }

    /// <summary>
    ///   所屬班級id
    /// </summary>
    [ImporterHeader(IsIgnore = true)]
    public Guid ClassId { get; set; }

    /// <summary>
    ///   學校Id
    /// </summary>
    [ImporterHeader(IsIgnore = true)]
    public Guid? SchoolId { get; set; }

    /// <summary>
    ///   校區Id
    /// </summary>
    [ImporterHeader(IsIgnore = true)]
    public Guid? CampusId { get; set; }

    /// <summary>
    ///   專業Id
    /// </summary>
    [ImporterHeader(IsIgnore = true)]
    public Guid? MajorsId { get; set; }

    /// <summary>
    ///   年級Id
    /// </summary>
    [ImporterHeader(IsIgnore = true)]
    public Guid? GradeId { get; set; }
  }

Reference

https://github.com/dotnetcore/Magicodes.IE

到此這篇關于ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法的文章就介紹到這了,更多相關ASP.NET Csv導入導出內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

  • Asp.net導出Excel/Csv文本格式數據的方法
  • asp.net+js 實現無刷新上傳解析csv文件的代碼
  • asp.net 導出到CSV文件亂碼的問題

相關文章

  • ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法

    ASP.NET開源導入導出庫Magicodes.IE完成Csv導入導出的方法

    說明 本章主要說明如何使用Magicodes.IE.Csv進行Csv導入導出. 關于Magicodes.IE 導入導出通用庫,通過導入導出DTO模型來控制導入和導出,支持Excel、Word、Pd
    2020-06-14
  • .net core 3.1在iis上發布的踩坑記錄

    .net core 3.1在iis上發布的踩坑記錄

    前言 寫這篇文章的目的是希望像我一樣喜歡.net 的人在發布 core到 iis上時少走點彎路 網上找了些資料,其實實際操作比較簡單,就是有幾個坑很惡心 踩坑記錄 首先是你
    2020-06-14
  • .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)

    .NET IoC模式依賴反轉(DIP)、控制反轉(Ioc)、依賴注入(DI)

    依賴倒置原則(DIP) 依賴倒置(Dependency Inversion Principle,縮寫DIP)是面向對象六大基本原則之一。他是指一種特定的的解耦形式,使得高層次的模塊不依賴低層次的
    2020-06-14
  • asp.net mvc core管道及攔截器的理解

    asp.net mvc core管道及攔截器的理解

    今天來看一下asp.net core的執行管道。先看下官方說明: 從上圖可以拋光,asp.net core的執行順序是,當收到一個請求后,request請求會先經過已注冊的中間件,然后
    2020-06-14
  • 聊一聊Asp.net過濾器Filter那一些事

    聊一聊Asp.net過濾器Filter那一些事

    最近在整理優化.net代碼時,發現幾個很不友好的處理現象:登錄判斷、權限認證、日志記錄、異常處理等通用操作,在項目中的action中到處都是。在代碼優化上,這一點是
    2020-06-14
  • xUnit 編寫 ASP.NET Core 單元測試的方法

    xUnit 編寫 ASP.NET Core 單元測試的方法

    還記得 .NET Framework 的 ASP.NET WebForm 嗎?那個年代如果要在 Web 層做單元測試簡直就是災難啊。.NET Core 吸取教訓,在設計上考慮到了可測試性,就連 ASP.NET
    2020-06-14
  • ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內容詳解

    ASP.NET Core自定義中間件如何讀取Request.Body與Response.Body的內容詳解

    背景# 最近在徒手造輪子,編寫一個ASP.NET Core的日志監控器,其中用到了自定義中間件讀取Request.Body和Response.Body的內容,但是編寫過程,并不像想象中的一帆
    2020-06-14
  • ASP.NET Core MVC如何實現運行時動態定義Controller類型

    ASP.NET Core MVC如何實現運行時動態定義Controller類型

    昨天有個朋友在微信上問我一個問題:他希望通過動態腳本的形式實現對ASP.NET Core MVC應用的擴展,比如在程序運行過程中上傳一段C#腳本將其中定義的Controller類型注
    2020-06-14
  • 實例講解PHP表單

    實例講解PHP表單

    表單處理 GET vs. POST 1 GET 和 POST 都創建數組(例如,array( key => value, key2 => value2, key3 => value3, ...))。此數組包含鍵/值對,其中的鍵是表單控
    2020-06-10
  • keras多顯卡訓練方式

    keras多顯卡訓練方式

    使用keras進行訓練,默認使用單顯卡,即使設置了os.environ['CUDA_VISIBLE_DEVICES']為兩張顯卡,也只是占滿了顯存,再設置tf.GPUOptions(allow_growth=True)之后可
    2020-06-10

最新評論

买宝宝用品赚钱吗 最新赛车网游 股票融资软件_杨方配资开户 北京11选5开奖时间 广东快乐十分历史走势 湖北30选5开奖结果 问道五行竞猜技巧规律 四不像特肖图2019今天 河南11选5出号走势图 江西快3开奖视频 天津炒股配资 宁夏11选五软件 体彩福建十一选五开奖结果 新疆11选5走势图表 青海快3开奖结果查询 七乐彩复试计算器 11选5聪明组合3中3