2011-07-15 8 views
1

Excelのスプレッドシートをインポートするように要求されましたが、数値と英数字の両方を含む特定のセルをインポートする際に問題が発生しました。c#Excelのインポートクエリ

エクセル例えば、データセットは、アレイ内の空の列に得数値フィールドとしてその治療行2、COL(A)ロードされている場合、上記の例1として

 Col 
     A   B    C 
RowFake Address CF11 1XX 
    XX123 8 Fake Address CF11 1XX 

。 OLEDBため

私の接続は、私は、データセットに文字列としてすべての内容を解析する必要がありIMEX = 1を設定しているこれに関連して

var dbImportConn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dataSource 
       + @";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";") 

です。また、私はRow 1 Col(A)を 'XX123'に変更すると、Col(A)全体が文字列として正常に解析されます!残念ながら、これは私のシナリオを助けるものではありません。エクセルファイルは、外部のクライアントから渡され、私の問題を解決するヘッダ行を持つファイルを通過させる手段がないことを知らせています。

この時点で、ファイルを編集して(プログラムで)ヘッダーを挿入すると、クライアントが変更する可能性があるので、これが安全なオプションではないことが考えられます。

基本的に私はスプレッドシート上の現在のフォーマットを扱い、すべてのセルを配列に渡すための解決策を見つける必要があります。以前誰かがこの問題に遭遇しましたか?またはこれを解決する方法を知っていますか?これが明確でない場合は

私は自分の考え おかげ スコット psのを待つだけでは、それはそれは、型の決定する前に、すべての列をスキャンするために、Excelを告げる変更することができますTypeGuessRowsと呼ばれるレジストリ設定があり

答えて

2

こんにちは叫びます。現在、これは、列のx個の行を読み込み、列の型を決定するように設定されているようです。最初のx行が整数で、x + 1が文字列の場合、これはすでに整数列であると判断されているため、インポートは失敗します。あなたは、これが直接の答えではないですが、私はあなたがExcel Data Readerを使用することをお勧めしたいと思いも

http://jingyangli.wordpress.com/2009/02/13/imex1-revisit-and-typeguessrows-setting-change-to-0-watch-for-performance/

+0

優れています。これは私を正しい方向に向ける。答えたすべての人に感謝します。 – Scott

0

これを参照してください。

..決める前に列全体を読み取るために、レジストリの設定を変更することができますこれはLGPLライセンスの下でopensourceであり、Microsoft Excelファイル('97 -2007)を読むためのC#で書かれた軽量で高速なライブラリです。

0

チェックこのリンク:提供http://www.dbsoftlab.com/imex1.html

ソリューションは、多かれ少なかれ、しかしIMOこのリンクは、より良い説明を持ってい...投稿1 sajと比較して、同じです。