2012-05-14 3 views
3
私は

列名が、私はのカラム名を取得する必要がある最初の行

(問題点1)

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

からスタートdoesnot場合OLEDBクエリを使用してExcelから列名を取得する方法ユーザーがアップロードした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"]; 

このコマンドを使用します。しかし、列名の行が最初の行から始まらない場合、列名は "F1、F2、....."となります。これをどうすれば解決できますか?どの列から列名を取得するかを問い合わせる方法はありますか?

(課題2)私はExcelから特定の範囲のデータを選択する必要があり、列ヘッダーと同様

。私は、このようなクエリを使用

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

しかし、それはこのような例外、メッセージ投げているようなので、12 を行ごとに3からデータを取ると言う「は、一つ以上の必要なパラメータに指定された値なしを。」

質問には何か構文エラーがありますか?

もしそうなら、どのようにしてクエリを修正するか教えてください。 1は、OLEDBを介して解決できない

+0

問題2は問題1の結果かもしれないと思います。残念ながら、スプレッドシートと会話するこの方法は、列名を作成するデータ範囲であると思うものの最初の行のみを使用します。ユーザーがアップロードしたスプレッドシートの形式を制御している場合は、列ヘッダーを1行に移動します。列名を 'F1'、' Repname'の代わりに 'F2'、' Country ' – Pynner

+0

こんにちはPynner、問題2は問題1の結果ではありません。私はselect文で範囲を与えることで問題2を解決しましたが、問題を解決できません1 – user1294617

答えて

1

問題は、Excelは、データベースではなく、それを行うことができる唯一のことは、

列名として最初の行を使用するか、または最初の行が空白である場合、F1等でありますこれを修正する方法は、interopを使用して空白の行を削除し、OLEDB経由でクエリを実行するか、interopを通じてシート全体を解析することです。

関連する問題