首页 > 后端开发 > C++ > 如何使用 OLEDB 按原始顺序检索 Excel 工作表名称?

如何使用 OLEDB 按原始顺序检索 Excel 工作表名称?

Linda Hamilton
发布: 2025-01-05 15:46:41
原创
873 人浏览过

How to Retrieve Excel Sheet Names in Their Original Order Using OLEDB?

使用 OLEDB 按工作表顺序检索 Excel 工作表名称

从 Excel 工作簿中检索工作表名称的任务是编程中经常遇到的任务。但是,在使用 OleDb 时,按照电子表格中定义的顺序获取这些名称可能会很困难。

问题定义

通过按字母顺序重新排列工作表名称,OleDbConnection. GetOleDbSchemaTable() 无法按所需顺序提供工作表名称。这阻碍了用户根据工作表名称或索引指定数据检索的能力,从而导致混乱。

使用嵌套循环的解决方案

一种方法涉及按顺序迭代工作表从工作表 0 到工作表数量减 1。这确保了工作表的保存

使用 OLEDB 实现

如果使用 Office Interop 类不可行,可以使用 OLEDB 的解决方案:

/// <summary>
/// Retrieves excel sheet names from an excel workbook.
/// </summary>
/// <param name="excelFile">The excel file.</param>
/// <returns>String[]</returns>
private String[] GetExcelSheetNames(string excelFile)
{
    OleDbConnection objConn = null;
    System.Data.DataTable dt = null;

    try
    {
        // Connection String
        String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" + 
          "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";

        // Create connection and open connection to database
        objConn = new OleDbConnection(connString);
        objConn.Open();

        // Get data table containing schema guid
        dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

        if(dt == null)
           return null;

        // Initialize String[] to store sheet names.
        String[] excelSheets = new String[dt.Rows.Count];
        int i = 0;

        // Add sheet name to the string array.
        foreach(DataRow row in dt.Rows)
        {
           excelSheets[i] = row["TABLE_NAME"].ToString();
           i++;
        }

        return excelSheets;
   }
   catch(Exception ex)
   {
       return null;
   }
   finally
   {
      // Clean up connection and data table
      if(objConn != null)
      {
          objConn.Close();
          objConn.Dispose();
      }
      if(dt != null)
      {
          dt.Dispose();
      }
   }
}
登录后复制

这个代码连接到 Excel 文件,检索包含工作表名称的数据表,并按照这些名称出现的顺序填充 String[]电子表格。

以上是如何使用 OLEDB 按原始顺序检索 Excel 工作表名称?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板