步骤详解:创建Excel导入工具类实例

0 下载量 177 浏览量 更新于2024-09-01 收藏 60KB PDF 举报
本文档详细介绍了如何创建一个Excel导入工具类,以便在程序中高效地读取和处理Excel文件中的数据。主要分为两个步骤: 步骤一:创建实体属性标记 首先,定义一个名为`CellAttribute`的自定义属性类,它继承自.NET框架的`Attribute`类。这个类用于标记Excel工作表中的单元格,提供列名(`DisplayName`)和类型处理(`TypeHandler`)的配置。`CellAttribute`类的构造函数接收显示名称和可选的类型处理器,用于指定特定列的数据处理方式。例如: ```csharp public class CellAttribute : Attribute { public string DisplayName { get; set; } public Type TypeHandler { get; set; } public CellAttribute(string displayName, Type handler = null) { DisplayName = displayName; Handler = handler; } } ``` 通过这种方式,开发人员可以明确每个Excel列与对象属性之间的关系,并指定数据解析规则。 步骤二:创建通用处理方法 接下来,创建一个泛型类`XlsFileHandler<T>`,其中`T`是一个类型参数,表示待导入的数据实体类型,且必须是新实例化的(`where T : new()`)。该类包含以下关键部分: 1. `Path` 和相关字典变量,用于存储文件路径以及列属性映射。 2. 构造函数接受Excel文件路径,并初始化列属性和属性字典。 3. `CreateMappers`方法是核心部分,遍历数据实体`T`的所有属性,获取`CellAttribute`类型的自定义注解。对于每个属性,它会将属性名添加到`_cellAttributes`字典中,作为键,对应的`CellAttribute`对象作为值。同时,还会将属性名与属性名关联起来,形成`_propDictionary`,用于后续的数据映射。 具体实现如下: ```csharp public class XlsFileHandler<T> where T : new() { private readonly string _path; private readonly Dictionary<string, CellAttribute> _cellAttributes; private readonly Dictionary<string, string> _propDictionary; public XlsFileHandler(string path) { _path = path; _cellAttributes = new Dictionary<string, CellAttribute>(); _propDictionary = new Dictionary<string, string>(); CreateMappers(); } private void CreateMappers() { foreach (var prop in typeof(T).GetProperties()) { foreach (CellAttribute cellMapper in prop.GetCustomAttributes(false).OfType<CellAttribute>()) { // 添加列属性映射 _cellAttributes.Add(prop.Name, cellMapper); // 添加属性名到属性字典 _propDictionary.Add(prop.Name, cellMapper.DisplayName); } } } } ``` 通过这个工具类,你可以方便地处理不同Excel文件中的数据,只需要传入文件路径,根据数据实体类型定义的`CellAttribute`即可自动完成数据的读取和映射。这大大简化了Excel数据导入的过程,并提高了代码的复用性和可维护性。