Excel最长常用操作封装

今天我想和大家分享有关Excel最长常用操作封装的内容。

01、起因

市面上有很多Excel操作库,这些库旨在提供各种Excel操作功能,包括数据、样式、公式、图表等。然而,在实际开发中,我们通常只需要进行导入和导出两种操作。因此,学习使用任何一种Excel操作库的成本相对较高。

为了解决这一问题,我们需要一个能够提供Excel读取和写入功能的包,以满足大部分常规需求,而无需深入了解Excel操作的细节。

因此,我们产生了二次封装Excel操作的想法,以便快速开发。

02、设计思路

整个设计思路围绕两个操作展开——导入和导出。

对于导入操作,我们希望能够直接从Excel文件中获取一个对象集合,类似于下面的伪代码:

var students = Read(excel)

对于导出操作,我们希望能够直接将一个对象集合转换为Excel文件,类似下面的伪代码:

var excel = Write(students)

对于Excel来说,我们关注的是行和列,而对象集合很容易表达出行的概念,但很难表达出列的概念。因此,我们需要进行一些转换,即将对象集合转换为类似表格的数据结构,以便与Excel的表对应。

在.NET中,已经存在这样的数据结构——DataTable。因此,我们可以通过DataTable将对象集合与Excel关联起来。

因此,要实现Excel导入和导出,我们需要实现以下两部分:

(1)对象集合与DataTable转换;

(2)DataTable与Excel转换;

接下来,我们将分别讨论这两部分的设计。

03、对象集合与DataTable转换

将这部分单独拿出来讨论的原因是,除了本身的需求外,这部分功能还可以作为公共基础功能,供其他场景使用,因此这部分功能将放入Ideal.Core.Common库中。

要实现对象集合与DataTable转换,需要分为两步:

(1)创建:以对象属性名作为列名创建DataTable;

(2)转换:将对象集合数据填充至DataTable行记录中,或者相反;

1、创建

对于创建表格,考虑到兼容性、扩展性和适用性,我们将支持多种方式创建表格,大致包括以下几种情况。

(1)根据列名创建表格;

(2)根据对象创建表格;

(3)根据对象绑定自定义特性创建表格;

当然,还需要根据各种细节提供不同的重载方法。

2、转换

对于转换表格,主要包括对象集合转为表格、表格转为对象集合,以及其他表格转换,大致包括以下几种情况。

(1)对象集合转为表格;

(2)根据对象绑定自定义特性将集合转为表格;

(3)表格转为对象集合;

(4)根据对象绑定自定义特性将表格转为对象集合;

(5)一维数组转为表格;

(6)行列转置;

04、DataTable与Excel转换

这部分功能也可以说是Excel帮助类的核心功能,因此这部分功能将放入Ideal.Core.Document库中。

DataTable与Excel转换可以分为两种情况:

(1)读:将Excel中的数据读入DataTable;

(2)写:将DataTable中的数据写入Excel;

1、读

将Excel数据读取至DataTable,根据不同的方式获取不同格式的Excel数据,可以分为以下两种情况:

(1)根据文件路径将数据读取至DataTable;

(2)根据文件流将数据读取至DataTable;

2、写

将DataTable数据写入Excel,同样根据不同方式将DataTable数据写入不同格式的Excel,也可以分为以下几种情况:

(1)将DataTable数据写入Excel文件流;

(2)将DataTable数据写入Excel字节数组;

(3)将DataTable数据写入指定路径的Excel;

05、对象集合与Excel转换

完成上述两部分后,这一步就简单多了,只需要对上述两部分进行整合。因此,这一步也可以分为读和写两种情况。

1、读

将Excel数据读取至对象集合,主要分为两种情况。

(1)将Excel数据读取至对象集合;

(2)根据对象自定义特性将Excel数据读取至对象集合;

根据不同的Excel数据格式,还有其他组合情况,这里先不细说。

2、写

将对象集合写入Excel,主要分为两种情况:

(1)将对象集合写入Excel;

(2)根据对象自定义特性将对象集合写入Excel;

同样,根据不同的Excel数据格式,还有其他组合情况,这里暂不细说。

后面我们将详细讲解具体实现过程。

:测试方法代码以及示例源码都已经上传至代码库,有兴趣的可以查看: https://gitee.com/hugogoos/Ideal

标签:游戏攻略