ASP.NET开源导入导出库Magicodes.IE完成Csv导入导出的方法

说明

本章主要说明如何使用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导入导出内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Asp.net导出Excel/Csv文本格式数据的方法

    刚刚开始做Excel相关的项目,所以遇到的问题不管大小都给记录一下 偶然的机会在添加数据的时候全改成了数字,结果输出的时候全自动变成了科学计数法,这是excel的强大功能,能自动识别数字和字符串,太聪明了反而有些麻烦,就像如果输入身份证(18位数字)的话那就不行了.超过了11位呢,下面查了些资料总结一下解决方案: 方法1: 在往excel中添加数据的时候在数据的前面加 单引号,我的是这个方法解决的 如:Sheet.Cells[iRow, iCol] ="'"+ ds.Tables[0]

  • asp.net 导出到CSV文件乱码的问题

    http://social.microsoft.com/Forums/zh-CN/295/thread/14a833f5-95bf-48ef-b6cf-c6028f338561 string name = System.Configuration.ConfigurationSettings.AppSettings["downloadurl"].ToString();FileStream fs = new FileStream(name, FileMode.Create, FileAcc

  • asp.net+js 实现无刷新上传解析csv文件的代码

    前阵子工作中用到,贴上代码,仅保留上传有关的代码,发现code其实很少. 上传页面html/js 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xht

  • ASP.NET开源导入导出库Magicodes.IE完成Csv导入导出的方法

    说明 本章主要说明如何使用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 通过如下代码片段我

  • one.asp多项目、函数库、类库 统一为一个版本的方法

    前几天 写的博客 多项目 函数库.类库 统一为一个版本的方法中提到 使用 one.php 将整个项目打包成 一个 php 文件,有网友 让我 整个asp版本的,今天下午抽空写了个 one.asp,使用方式基本一致,这次 增加了路径计算的功能,可以引用不同路径. 举个简单的应用场景,开发一个小的API系统,支持 XML.JSON输出.区别是 基础版(dev/dev.asp)只支持 Access,VIP版本(dev/vip.asp)支持 Access + SQL Server.这样VIP版本就需要在

  • 浅谈vue.js导入css库(elementUi)的方法

    1.安装以下模块,让webpack可以解析css文件 cnpm install style-loader --save-dev cnpm install css-loader --save-dev cnpm install file-loader --save-dev 2.安装elementUi模块 cnpm install element-ui@next -S 3.在webpack.base.conf.js中添加配置 { test: /\\\\\\\\.css$/, loader: "styl

  • asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法

    本文实例讲述了asp.net实现将Excel中多个sheet数据导入到SQLSERVER中的方法.分享给大家供大家参考,具体如下: public DataSet GetDataSet(string filePath) { string Connstr = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties='Excel 8.0;HD

  • 4个顶级开源JavaScript图表库

    图表对于可视化数据和使网站具有吸引力非常重要.可视化演示使分析大块数据和传达信息变得更加容易.JavaScript图表库使你能够以易于理解和交互的方式可视化数据,并改善网站的设计.有四个顶级开源JavaScript图表库,你一定要Get! 1.Chart.js Chart.js是一个开源JavaScript库,允许你在应用程序上创建动画,美观和交互式图表.它可以在MIT许可下获得. 使用Chart.js,你可以创建各种令人印象深刻的图表和图形,包括条形图,折线图,面积图,线性比例和散点图.它完全

  • 导入takephoto库编译失败与glide库冲突应排除依赖

    导入takephoto库编译失败与glide库冲突 当您的项目中导入了glide库, 同时也导入了takephoto库时, 出现编译失败. 编译报错指向于Glide库某文件 原因: 这是因为takephoto库中本身依赖了三个库,其中一个库是照片墙的库multipleimageselect 从github上打开该开的build.gradle可以看到该库又依赖了glide库. 所以发生依赖冲突问题. 以现在各库更新情况, takephoto是4.0.3 multipleimageselect 是1

  • 浅析pip安装第三方库及pycharm中导入第三方库的问题

    pip安装的话,找到自己安装python的路径,在安装路径下会有一个文件夹,比如我的安装路径是c盘 我是默认安装路径,在里面有一个python36文件夹.哦对了,你们安装python的时候,我的是3.6版本,在安装界面记得吧add path这个选项勾上,这是帮你自动添加路径. 然后打开python36文件夹,里面有一个scripts.( 有的人会找不到AppData在哪,在c盘 ,因为被隐藏了.我的是win8系统,在查看里面 把这两个勾上,就能看到隐藏的文件了)打开scripts,里面有essa

  • Python调用ffmpeg开源视频处理库,批量处理视频

    代码示例 # coding=utf-8 import os import subprocess import datetime import json, pprint import re, time import threading import random import shutil class FFmpeg: def __init__(self, editvdo, addlogo=None, addmusic=None, addvdohead=None, addvdotail=None):

  • PyCharm导入numpy库的几种方式

    numpy导入 有两种方式可以导入: 第一种:输入代码块 在Terminal输入pip install numpy 第二种:视图 1.打开settings 2.打开Python Interpreter 3.输入numpy,点击Install Package 4.完成,叉了 同理可以添加其它库的时候也可以进行相应上的操作 到此这篇关于PyCharm导入numpy库的几种方式的文章就介绍到这了,更多相关PyCharm导入numpy库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持

  • 将MySQL的表数据全量导入clichhouse库中

    目录 一.环境 二.创建测试库表写入测试数据 一.环境 tidb06 mysql5.7.32 tidb05 clickhouse20.8.3.18 二.创建测试库表写入测试数据 tidb06库创建复制账户: GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'click_rep'@'172.16.0.246' identified by 'jwts996';flush privileges; Query OK, 0 row

随机推荐