论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
开源 - Ideal库 - Excel资助类,设计思路(一) ...
开源 - Ideal库 - Excel资助类,设计思路(一)
商道如狼道
金牌会员
|
2024-11-28 02:53:39
|
来自手机
|
显示全部楼层
|
阅读模式
楼主
主题
901
|
帖子
901
|
积分
2703
今天开始和大家分享关于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
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
商道如狼道
金牌会员
这个人很懒什么都没写!
楼主热帖
【python】实现文章同步csdn社区自动化 ...
SQLI-LABS(Less-5)
如何利用ipad随时随地开发代码 ...
到底什么是小程序插件?
容器化 | 在 Rancher 中部署 MySQL 集 ...
django 报错 'set' object is ...
MySQL数据库安装
MVCC - Read View的可见性判断理解 ...
微信小程序云开发中的command简介 ...
Scrum 框架的四个会议还适用于哪些敏捷 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表