• Excel插件类库的设计思路


    一、插件功能:提供多种读取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();
            }
        }
  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/gossip/p/3843080.html
Copyright © 2020-2023  润新知