开源 - Ideal库 - Excel帮助类,设计思路(一)

今天开始和大家分享关于Excel最长常用操作封装。

01、起因

市面上有很多Excel操作库,这些库设计之初的目标是提供对Excel的各种操作功能,包括数据、样式、公式、图表等等。而对于我们平时开发来说,大多时候并不需要那么多强大的功能,可能大部分只涉及两个操作导入和导出。在这种情况下使用任何一种Excel操作库的学习成本相对来说都是比较高的。

如果有个包能提供Excel读取和写入功能,已经能满足大部分常规需求了,而并不需要了解那么多Excel操作细节。

因此有了二次封装Excel操作的想法,用来应对快速开发。

02、设计思路

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

对于导入我们肯定希望是读完Excel文件直接得到一个对象集合,类似下面伪代码:

var students = Read(excel)

对于导出我们肯定希望传入对象集合直接得到一个Excel文件,类似下面伪代码:

var excel = Write(students)

对于Excel来说关注的是行和列,而对象集合可能很容易表达出行的概念,但是很难表达出列的概念。因此如何想实现上面说到的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

相关推荐
Excel_easy2 小时前
复制粘贴到可见单元格,并且带有原格式-Excel易用宝
excel
火星技术2 小时前
WORD/PDF/EXCEL/PDF等格式的转换软件
pdf·word·excel
流形填表2 小时前
Word表格批量提取数据到Excel,Word导出到Excel,我爱excel
word·excel
杨荧4 小时前
【开源免费】基于Vue和SpringBoot的贸易行业crm系统(附论文)
前端·javascript·jvm·vue.js·spring boot·spring cloud·开源
lida20036 小时前
Ardupilot开源无人机之Geek SDK进展2024
开源·无人机
Anlici9 小时前
魔搭 AI 框架开发与 LangChain 的结合
人工智能·python·开源
smilejingwei9 小时前
Excel 做数据分析的好与不好
数据分析·excel·spl·esprocspl
Flerken10111 小时前
EXCEL: (二) 常用图表
数据分析·excel
小众AI16 小时前
TRELLIS - 生成 3D 作品的开源模型
人工智能·开源·ai编程
Channing Lewis18 小时前
excel如何将小数转换为百分比
excel