2016-10-26 14 views
0

OLEDBデータ接続があり、列A:Oをテーブルにインポートするだけです。OLEDB接続固有の列

私は正常に...すべてのデータをインポートし、ちょうどそれらの列(A:O)にそれを制限することはできません

私は、接続のプロパティ画面を移入しています。..事前に

おかげで.. 。

プロバイダ= Microsoft.ACE.OLEDB.12.0;ユーザーID =管理;データ ソース= FILEPATH;モード=読み書き; "; HDR = NO; IMEX = 1文字列のSQL =" プロパティ=拡張」選択した*から ['SHEETNAME' $ A:$ O] "" "; Jet OLEDB:システムデータベース=" "; JetJet OLEDB:エンジンタイプ= 35; Jet OLEDB:データベースロックモード= 0; JetOLEDB:新しいデータベースパスワード= ""; Jet OLEDB:作成 システムデータベース= False; Jet OLEDB:データベースの暗号化= False; Jet OLEDB:なし コンパクトでロケールをコピーする= False; Jet OLEDB:レプリカなしでコンパクト 修復= False;ジェットOLEDB:SFP =偽;ジェットOLEDB:= Falseの複雑な データをサポート;ジェットOLEDB:偽バイパスのUserInfo検証=;ジェット OLEDB:偽限定DBキャッシュ=;ジェットOLEDB:バイパスChoiceField 検証= Trueの

答えて

0

['SHEETNAME' $ A:$ O]には、SHEETNAMEと2番目の$の前後に一重引用符は必要ありません。以下のようにそれを使用します。

select * from [SHEETNAME$A:O] 

または

select * from [SHEETNAME$A1:O10000] 

私は範囲で正常に使用のOleDB select文をしましたが、それは代わりに、それはのOLE DBコマンドのように指定された、接続文字列で指定されていませんでした。 SQL ServerのOPENROWSETの呼び出しで

cmd = new OleDbCommand("SELECT * FROM [Template$A1:Q10000]", conn); 

または :

SELECT ' + @columnList + ' 
    FROM OPENROWSET(' + 
    '''Microsoft.ACE.OLEDB.12.0'', ' + 
    '''Excel 12.0;Database=' + @TemplateFilePath + ';HDR=YES;IMEX=1'', ' + 
    '''SELECT * FROM [Template$' + @TemplateColumnsRangeStart + ':' + @TemplateColumnsRangeEnd + ']'') 

たとえば、@ TemplateColumnsRangeStart = 'A5'および/またはTemplateColumnsRangeEnd = 'Z'です。

これが役に立ったかどうかお知らせください。

PS。 StackOverflowへようこそTourを確認して、質問、回答、投稿の投票などを始めてください。

関連する問題