ホームページ > バックエンド開発 > C++ > OLEDB を使用して Excel シート名を元の順序で取得する方法

OLEDB を使用して Excel シート名を元の順序で取得する方法

Linda Hamilton
リリース: 2025-01-05 15:46:41
オリジナル
848 人が閲覧しました

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

OLEDB を使用して Excel シート名をシート順序で取得する

Excel ワークブックからシート名を取得するタスクは、プログラミングでよく発生します。ただし、OleDb を使用する場合、スプレッドシートで定義されている順序でこれらの名前を取得するのは困難な場合があります。

問題の定義

シート名をアルファベット順に並べ替えると、OleDbConnection になります。 GetOleDbSchemaTable() は、シート名を希望の順序で提供できません。これにより、ユーザーがシート名またはインデックスに基づいてデータ取得を指定することができなくなり、混乱が生じます。

ネストされたループを使用した解決策

1 つのアプローチでは、シートを順番に反復処理します。シート 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート