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

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

Linda Hamilton
Linda Hamilton原创
2025-01-05 15:46:41850浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn