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则没有"$"后缀。

  • 相关阅读:
    C#写的操作系统
    FPS游戏:实现狙击子弹加速
    内表的一些操作例子(工作区赋值使用了新语法)
    SAP MM模块相关透明表收集
    简单的ALV显示例子
    拼接和前导零用法
    LOOP AT GROUP语法练习
    RFC函数的初步使用同步
    excel保存时出现“请注意,您的文档的部分内容可能包含了文档检查器无法删除的个人信息”
    Abap内表
  • 原文地址:https://www.cnblogs.com/zhangronghua/p/GetSheetListFromExcelFile.html
Copyright © 2011-2022 走看看