2

Excel シートからクライアント データを読み込む必要があります。*.xls次のように、データを非常にすばやく簡単に読み取ることができました。

string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\MyExcelFile.xls;Extended Properties=\"Excel 8.0;HDR=YES\"";
using (var conn = new System.Data.OleDb.OleDbConnection(connString)) {
    conn.Open();
    System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("Select * From [SheetName$]", conn);
    OleDbDataReader reader = cmd.ExecuteReader();
    int firstNameOrdinal = reader.GetOrdinal("First Name");
    int lastNameOrdinal = reader.GetOrdinal("Last Name");
    while (reader.Read()) {
        Console.WriteLine("First Name: {0}, Last Name: {1}", 
            reader.GetString(firstNameOrdinal), 
            reader.GetString(lastNameOrdinal));
    }
}

問題は 4 行目にあります: SELECT * FROM [SheetName$]. "SheetName"この例では、読み取ろうとしているワークシートの名前に置き換える必要があります。ほとんどの場合、クライアントはこれと同じ名前を付けており、すべて問題ありません。

ただし、そうでない場合もあります。つまり、修正するために手動で作業する必要があります。常に 1 つのシート (この場合はともかく) があるため、「名前が何であれ、最初のシートを使用する」ようにコードに指示したいと思います。

この手法を使用してこれを達成する方法を見つけることができなかったので、コミュニティに連絡しています。アドバイスをよろしくお願いします。

PS - 外部ファイル (FileHelpers など) の長さの承認プロセスを経る必要がありますが、サードパーティのライブラリを必要としないため、このプロセスを使用することを好みます。可能であれば、このメソッドへの回答を制限したいと思います。

ありがとう。

4

1 に答える 1

3

ここでの答えは、あなたのニーズに合うかもしれません:

http://social.msdn.microsoft.com/forums/en-US/adodotnetdataproviders/thread/711cf5f9-75fc-4a02-9a96-08aec48dad69/

.GetOleDbSchemaTable()ワークブック内のシート名のリストを取得するために使用します。

于 2013-01-14T17:45:11.220 に答える