zoukankan      html  css  js  c++  java
  • C#取得Excel文件中Sheet页信息

    在很多时候我们的系统中都允许用户上传Excel文件,这时如果用户上传得Excel文件有多个Sheet页我们就需要遍历Sheet页, 那怎么才能取得所有Sheet页的列表哪,请看下面的代码:

    public List<string> GetExcelSheetNames(string excelFileFullPath, bool isIncludeName)
    {
    var fileType
    = Path.GetExtension(excelFileFullPath.ToLower()).Trim();
    var excelVersionNumber
    = fileType == ".xlsx" ? "12.0" : "8.0";

    OleDbConnection objConn
    = null;
    DataTable dt
    = null;
    var sheetList
    = new List<string>();

    try
    {
    var connString
    = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Data Source={0} ;Extended Properties=\"Excel {1};HDR=Yes;IMEX=2;\"", excelFileFullPath, excelVersionNumber);

    objConn
    = new OleDbConnection(connString);
    objConn.Open();
    dt
    = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

    if (dt == null)
    {
    return sheetList;
    }

    foreach (DataRow row in dt.Rows)
    {
    var sheetName
    = row["TABLE_NAME "].ToString();
    if(isIncludeName)
    {
    sheetList.Add(sheetName);
    continue;
    }
    else
    {
    if (sheetName.EndsWith("$"))
    {
    sheetList.Add(sheetName);
    }
    }
    }

    return sheetList;
    }
    finally
    {
    if (objConn != null)
    {
    objConn.Close();
    objConn.Dispose();
    }
    if (dt != null)
    {
    dt.Dispose();
    }
    }
    }

    代码比较简单,不多做解释,唯一需要注意的是isIncludeName这个参数,如果isIncluedeName == true,表示我们不光要返回Sheet页的列表,还要返回用户再Excel的"Name Manager"中定义的Name. Name和Sheet的唯一区别是所有的Sheet在DBSchemaTable.["Table_Name"]中都以"$"结尾(如:Sheet1$, Sheet2$),而Name则没有"$"后缀。

  • 相关阅读:
    使用国内镜像安装pyqt5
    python线程池 ThreadPoolExecutor 的用法及实战
    进程和线程、协程的区别
    python线程池实现
    python 多进程使用总结
    参与开源项目
    脑图——前端技术
    HTML中DTD使用小结
    浅谈面向对象——追溯法
    Dva.js 里面的几个概念
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/GetSheetListFromExcelFile.html
Copyright © 2011-2022 走看看