首頁 > 後端開發 > C++ > 如何使用 OLEDB 以原始順序擷取 Excel 工作表名稱?

如何使用 OLEDB 以原始順序擷取 Excel 工作表名稱?

Linda Hamilton
發布: 2025-01-05 15:46:41
原創
844 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板