一、插件功能:提供多种读取Excel的方式,如NPOI、Com、Aspose,调用接口一致,包括Excel文件路径,sheet名称、读取是否包含列头(即Excel第一行是否为列头行)

二、实现思路
2.1 定义一个接口,该接口提供一个读取Excel的公共方法

 public interface IExcelReader{/// <summary>/// 从excel的datesheet读出数据到DataTable/// </summary>/// <param name="filePath">excel文件名</param>/// <param name="sheetName">sheetName</param>/// <param name="readHeader">是否读取第一行</param>/// <returns></returns>DataTable ReadFromExcel(string filePath, string sheetName = "Sheet1", bool readHeader = false);}

2.2 每种读取Excel的方式单独定义一个实现类,均集成于公共接口

 public class ExcelReaderNPOIImpl : IExcelReader{/// <summary>/// 读取Excel数据并以DataTable形式返回(NPOI方式)/// </summary>/// <param name="filePath"></param>/// <param name="sheetName"></param>/// <param name="readHeader">是否包括列头</param>/// <returns></returns>public DataTable ReadFromExcel(string filePath, string sheetName = "Sheet1", bool readHeader = false){...}}public class ExcelReaderAsposeImpl : IExcelReader{/// <summary>/// 读取Excel数据并以DataTable形式返回(Aspose方式)/// </summary>/// <param name="filePath"></param> /// <param name="sheetName"></param>/// <param name="readHeader">是否包括列头</param>/// <returns></returns>public DataTable ReadFromExcel(string filePath, string sheetName = "Sheet1", bool readHeader = false){...}}

2.3 定义一个策略类,通过该类的静态方法返回具体一种实现方法的对象供调用方操作,调用方不用在客户端new具体的类,new的过程由策略类实现

  /// <summary>/// 选择读取Excel内容的方式/// </summary>public class ExcelReaderTypeSelect{/// <summary>/// 返回一个Aspose实现的IExcelReader/// </summary>/// <returns></returns>public static IExcelReader AsposeReader(){return new ExcelReaderAsposeImpl();}/// <summary>/// 返回一个Com实现的IExcelReader/// </summary>/// <returns></returns>public static IExcelReader ComReader(){return new ExcelReaderComImpl();}/// <summary>/// 返回一个NPOI实现的IExcelReader/// </summary>/// <returns></returns>public static IExcelReader NpoiReader(){return new ExcelReaderNPOIImpl();}}

Excel插件类库的设计思路相关推荐

  1. iOS 组件化,插件化,模块化设计思路分析

    iOS 组件化,插件化设计思路分析 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,V ...

  2. 我们一起完成插件框架的设计与实现

    我们一起完成插件框架的设计与实现 原文:我们一起完成插件框架的设计与实现 开场一些题外话,今天登陆这个"小菜"的博客园,感触颇多."小菜"是我以前在QQ群里面的 ...

  3. 亿级流量网关设计思路

    本文准备围绕七个点来讲网关,分别是网关的基本概念.网关设计思路.网关设计重点.流量网关.业务网关.常见网关对比,对基础概念熟悉的朋友可以根据目录查看自己感兴趣的部分. 什么是网关 网关,很多地方将网关 ...

  4. 使用python套用excel模板_集成python的excel插件模板pyaddin——使用说明

    虽然VBA是Excel的官配二次开发语言,但鉴于python的简洁易用高可维护性,相信不少人更倾向于使用python来处理Excel相关的二次开发工作.目前已有一些优秀的python第三方库,例如xl ...

  5. 对接接口文档_接口自动化测试框架设计思路

    接口自动化测试--框架设计思路 1 前言 之前文章跟大家分享了一下自己在接口自动化测试中进行测试准备的一些相关知识点,接下来本篇文章详细分享一下接口自动化框架设计的思路总结,希望能对初次探索接口自动化 ...

  6. 小米自动化运维平台演进设计思路

    嘉宾 | 孙寅 编辑 | 张婵 小米自动化运维平台建设大致分为三个时期,整体建设的规划比较清晰,能够一以贯之.本文介绍了小米自动化运维平台的演进思路. 现如今,随着云计算和分布式的落地和发展,越来越多 ...

  7. java实现遍历树形菜单方法——设计思路【含源代码】

    开发工具:MyEclipse 10 后台框架:Hibernate + Struts2 数据库:Oracle 11g 前台框架:EasyUi 浏览器:谷歌 在开发中我们经常会遇到左边是树形菜单,右边是一 ...

  8. 插件式架构设计实践:插件式系统架构设计简介

    本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework(MEF),以插件式架构设计为导线,分享本人在从事基于微软S ...

  9. 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景

    Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用 ...

最新文章

  1. 使用LaTeX排版如何方便地引用多篇参考文献(不使用插件)
  2. android 带记忆功能的播放器源码,Android实现阅读进度记忆功能
  3. mpeg b帧 编码 matlab,一种基于压缩域的镜头检测算法
  4. 神秘大三角(判断点与三角形的关系)
  5. 网络编程懒人入门(一):快速理解网络通信协议(上篇)
  6. OpenCV cv :: UMat与DirectX11曲面的互操作性的实例(附完整代码)
  7. 常见Java面试题之静态变量和实例变量的区别
  8. requirejs、vue、vuex、vue-route的结合使用,您认为可行吗?
  9. 【Elasticsearch】 es 7.6 索引墓碑
  10. markdown知识轻轻来袭
  11. 多线程、多核技术是什么技术?
  12. gm220s路由器怎么设置_中国移动GM220-S光猫修改为桥接模式并启用IPV6
  13. 晶体管电路设计---MOS管与三极管特性
  14. matlab连续信号傅里叶变换,连续信号的傅里叶变换及matlab显示
  15. 使用tftpd32烧写内核(拯救你的“砖”)
  16. 计算机网络-自顶向下方法-笔记【第1章-概述】
  17. macbook proa1708_MacBook Pro 2017 A1708自己更换电池
  18. 微信小程序授权登录取消授权重新授权处理方法 附可用代码
  19. Echarts自定义数据视图(DataView)-按钮名称-刷新方法
  20. linux电脑主机国产,免费linux主机面板推荐,国产比较优秀Linux免费云主机管理面...

热门文章

  1. python映射类型包括哪三种_python新手入门必备——映射类型相关函数
  2. 2021-03-12 Python基础核心概念 变量和简单数据类型
  3. linux pip已经安装,提示/usr/bin/pip: No such file or directory
  4. 数据结构实验之查找四:二分查找(递归实现和while循环实现)
  5. N - New Game(DFS+剪枝)
  6. 最大矩形面积_JAVA
  7. leetcode -day19 Convert Sorted List to Binary Search Tree
  8. 【Linux】29.扫描本机同一局域网内 某端口开启 的主机
  9. jQuery 实例 教程
  10. 伪共享(false sharing),并发编程无声的性能杀手