3

OLEDB クエリで 2 つの問題に直面しています

(問題1)

ユーザーがアップロードした Excel シートの列名を取得する必要があります。Excelの接続文字列は

connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+fileNameAndPath+";
Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";

次に、このコマンドを使用します

connection.Open();

DataTable schemaTable = connection.GetSchema("Columns");
Taking column name from each datarow like this
string name = (string)row["COLUMN_NAME"];

列名がExcelの最初の行にある場合、正常に機能しています。ただし、列名の行が最初の行から始まらない場合、列名は「F1、F2、.....」になります。どうすればこれを解決できますか? どの行から列名を取得するかをクエリで伝える方法はありますか?

(問題2)

列ヘッダーと同様に、Excel の特定の範囲からデータを選択する必要があります。たとえば、行 3 から行 12 までのデータを取得します。したがって、次のようなクエリを使用しました。

Select RepName, Country from [Sheet1$3:12].

ただし、「1 つ以上の必須パラメーターに値が指定されていません」というような例外メッセージがスローされます。

クエリに構文エラーはありますか?

もしそうなら、誰かがクエリを修正する方法を教えてもらえますか?

4

1 に答える 1

1

問題 1 は OLEDB では解決できません。Excel はデータベースではなく、最初の行を列名として使用するか、最初の行が空白の場合は F1 などを使用することしかできません。

これを修正できる唯一の方法は、相互運用機能を使用して空白行を削除してから、OLEDB 経由でクエリを実行するか、相互運用機能を使用してシート全体を解析することです。

于 2012-08-09T09:44:08.290 に答える