很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

2026-03-30 15:211阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1263个文字,预计阅读时间需要6分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

(文章目录)前言+ExcelMapper+简介+功能特点+应用场景

(文章目录)


前言

ExcelMapper 是一个基于 MIT 协议的开源组件,通过操作 C# 中的数据模型来进行 Excel 的读取和写入。它提供了非常简洁的 API,甚至可以通过一行代码读取或写入 Excel 数据。

核心功能

  • 读取和写入 Excel 文件
  • 使用纯托管 NPOI 库而不是 Jet 数据库引擎(NPOI 用户组)
  • 使用标题行(列名)或列索引(无标题行)映射到 Excel 文件
  • 映射嵌套对象(父/子对象)
  • 阅读时可选择跳过空白行
  • 保存回文件时保留格式
  • (可选)让映射器跟踪对象
  • 通过约定、属性或方法调用将列映射到属性
  • 对数字列和日期时间列使用自定义或内置数据格式
  • 根据属性类型映射公式或公式结果
  • 映射 JSON
  • 获取/保存动态对象
  • 使用记录
  • 提供自定义对象工厂

GitHub网址:github.com/mganss/ExcelMapper

一、.NET Core使用ExcelMapper

1.使用 Nuget 搜索并安装 ExcelMapper

2.从Excel文件中读取对象

var products = new ExcelMapper("products.xlsx").Fetch<Product>();

public class Product { public string Name { get; set; } public int NumberInStock { get; set; } public decimal Price { get; set; } }

3.属性映射

3.1 映射到特定列名称

public class Product { public string Name { get; set; } [Column("Number")] public int NumberInStock { get; set; } public decimal Price { get; set; } }

3.2 映射到列索引

public class Product { [Column(1)] public string Name { get; set; } [Column(Letter="C")] public int NumberInStock { get; set; } [Column(4)] public decimal Price { get; set; } } var products = new ExcelMapper("products.xlsx") { HeaderRow = false }.Fetch<Product>();

请注意,列索引不需要是连续的。映射到列索引时,需要通过属性或方法显式映射每个属性。您可以将列索引与列名组合在一起,以指定显式列顺序,同时仍使用标题行。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

3.3 通过方法调用映射

除了在实体类上加特性的方式,ExcelMapper 还支持使用代码的方式手动映射,如下

var excel = new ExcelMapper("products.xls"); excel.AddMapping<Product>("Number", p => p.NumberInStock); excel.AddMapping<Product>(1, p => p.NumberInStock); excel.AddMapping(typeof(Product), "Number", "NumberInStock"); excel.AddMapping(typeof(Product), ExcelMapper.LetterToIndex("A"), "NumberInStock");

3.4 多个映射

您可以将单个列映射到多个属性,但您需要了解从对象映射回 Excel 时应发生的情况。若要指定要映射回 Excel 的单个属性,请添加映射到同一列的所有其他属性的属性。或者,可以在通过方法调用进行映射时使用该方法。

public class Product { public decimal Price { get; set; } [Column("Price", MappingDirections.ExcelToObject)] public string PriceString { get; set; } } // or excel.AddMapping<Product>("Price", p => p.PriceString).FromExcelOnly();

Column默认情况下,属性是继承的,如果将属性添加到 Base 中的属性,则会导致单个重写属性的多个映射 和派生类。若要防止出现这种情况,请在基类中的属性上将该属性设置为 false。

3.5 动态映射

你可以不定义实体类,直接使用 dynamic 类型获取数据,如下

var products = new ExcelMapper("products.xlsx").Fetch(); // -> IEnumerable<dynamic> products.First().Price += 1.0;

3.6 忽略属性

public class Product { public string Name { get; set; } [Ignore] public int Number { get; set; } public decimal Price { get; set; } } // or var excel = new ExcelMapper("products.xlsx"); excel.Ignore<Product>(p => p.Price);

3.7 特定数据格式

public class Product { [DataFormat(0xf)] public DateTime Date { get; set; } [DataFormat("0%")] public decimal Number { get; set; } }

更多属性使用清参考官网

4.写入 Excel 文件

1、纯写入

var products = new List<Product> { new Product { Name = "Nudossi", NumberInStock = 60, Price = 1.99m }, new Product { Name = "Halloren", NumberInStock = 33, Price = 2.99m }, new Product { Name = "Filinchen", NumberInStock = 100, Price = 0.99m }, }; new ExcelMapper().Save("products.xlsx", products, "Products");

2、读取写入

var products = new ExcelMapper("products.xlsx").Fetch<Product>().ToList(); products[1].Price += 1.0m; excel.Save("products.out.xlsx");

3、JSON 支持

你可以非常方便的把 Excel 中的数据映射到 Json 类型中,通过使用 Json 特性或者 AsJson 方法,如下

public class ProductJson { [Json] public Product Product { get; set; } } // or var excel = new ExcelMapper("products.xls"); excel.AddMapping<ProductJson>("Product", p => p.Product).AsJson();

本文共计1263个文字,预计阅读时间需要6分钟。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

(文章目录)前言+ExcelMapper+简介+功能特点+应用场景

(文章目录)


前言

ExcelMapper 是一个基于 MIT 协议的开源组件,通过操作 C# 中的数据模型来进行 Excel 的读取和写入。它提供了非常简洁的 API,甚至可以通过一行代码读取或写入 Excel 数据。

核心功能

  • 读取和写入 Excel 文件
  • 使用纯托管 NPOI 库而不是 Jet 数据库引擎(NPOI 用户组)
  • 使用标题行(列名)或列索引(无标题行)映射到 Excel 文件
  • 映射嵌套对象(父/子对象)
  • 阅读时可选择跳过空白行
  • 保存回文件时保留格式
  • (可选)让映射器跟踪对象
  • 通过约定、属性或方法调用将列映射到属性
  • 对数字列和日期时间列使用自定义或内置数据格式
  • 根据属性类型映射公式或公式结果
  • 映射 JSON
  • 获取/保存动态对象
  • 使用记录
  • 提供自定义对象工厂

GitHub网址:github.com/mganss/ExcelMapper

一、.NET Core使用ExcelMapper

1.使用 Nuget 搜索并安装 ExcelMapper

2.从Excel文件中读取对象

var products = new ExcelMapper("products.xlsx").Fetch<Product>();

public class Product { public string Name { get; set; } public int NumberInStock { get; set; } public decimal Price { get; set; } }

3.属性映射

3.1 映射到特定列名称

public class Product { public string Name { get; set; } [Column("Number")] public int NumberInStock { get; set; } public decimal Price { get; set; } }

3.2 映射到列索引

public class Product { [Column(1)] public string Name { get; set; } [Column(Letter="C")] public int NumberInStock { get; set; } [Column(4)] public decimal Price { get; set; } } var products = new ExcelMapper("products.xlsx") { HeaderRow = false }.Fetch<Product>();

请注意,列索引不需要是连续的。映射到列索引时,需要通过属性或方法显式映射每个属性。您可以将列索引与列名组合在一起,以指定显式列顺序,同时仍使用标题行。

很抱歉,您提供的信息不完整,我无法直接给出答案。请您提供更具体的问题或信息,这样我才能更好地帮助您。

3.3 通过方法调用映射

除了在实体类上加特性的方式,ExcelMapper 还支持使用代码的方式手动映射,如下

var excel = new ExcelMapper("products.xls"); excel.AddMapping<Product>("Number", p => p.NumberInStock); excel.AddMapping<Product>(1, p => p.NumberInStock); excel.AddMapping(typeof(Product), "Number", "NumberInStock"); excel.AddMapping(typeof(Product), ExcelMapper.LetterToIndex("A"), "NumberInStock");

3.4 多个映射

您可以将单个列映射到多个属性,但您需要了解从对象映射回 Excel 时应发生的情况。若要指定要映射回 Excel 的单个属性,请添加映射到同一列的所有其他属性的属性。或者,可以在通过方法调用进行映射时使用该方法。

public class Product { public decimal Price { get; set; } [Column("Price", MappingDirections.ExcelToObject)] public string PriceString { get; set; } } // or excel.AddMapping<Product>("Price", p => p.PriceString).FromExcelOnly();

Column默认情况下,属性是继承的,如果将属性添加到 Base 中的属性,则会导致单个重写属性的多个映射 和派生类。若要防止出现这种情况,请在基类中的属性上将该属性设置为 false。

3.5 动态映射

你可以不定义实体类,直接使用 dynamic 类型获取数据,如下

var products = new ExcelMapper("products.xlsx").Fetch(); // -> IEnumerable<dynamic> products.First().Price += 1.0;

3.6 忽略属性

public class Product { public string Name { get; set; } [Ignore] public int Number { get; set; } public decimal Price { get; set; } } // or var excel = new ExcelMapper("products.xlsx"); excel.Ignore<Product>(p => p.Price);

3.7 特定数据格式

public class Product { [DataFormat(0xf)] public DateTime Date { get; set; } [DataFormat("0%")] public decimal Number { get; set; } }

更多属性使用清参考官网

4.写入 Excel 文件

1、纯写入

var products = new List<Product> { new Product { Name = "Nudossi", NumberInStock = 60, Price = 1.99m }, new Product { Name = "Halloren", NumberInStock = 33, Price = 2.99m }, new Product { Name = "Filinchen", NumberInStock = 100, Price = 0.99m }, }; new ExcelMapper().Save("products.xlsx", products, "Products");

2、读取写入

var products = new ExcelMapper("products.xlsx").Fetch<Product>().ToList(); products[1].Price += 1.0m; excel.Save("products.out.xlsx");

3、JSON 支持

你可以非常方便的把 Excel 中的数据映射到 Json 类型中,通过使用 Json 特性或者 AsJson 方法,如下

public class ProductJson { [Json] public Product Product { get; set; } } // or var excel = new ExcelMapper("products.xls"); excel.AddMapping<ProductJson>("Product", p => p.Product).AsJson();