2012-01-16 14 views
0

C#でExcelファイルを読むにはどうすればよいですか?ポイントには、ユーザーがExcelファイルをアップロードできるWebページがあります。このファイルは、読み込まれてデータベーステーブルに送信されます。Excelファイルを読む

ここではOleDBの方法は無用ですが、私が知る限り、1つのファイルを読むことができます。ここには多くのものがあります。私がこれまでに見つかった

ベストな方法は、このいずれかになります。

http://www.codeproject.com/KB/office/csharp_excel.aspx

その他のより良い/より新しい方法は?

ありがとうございました。

+2

OleDBメソッドでは、1つのファイルのみを読み取ることができますか? –

+0

@ M.Babcockそれは接続文字列を持っています。もし私が正しいのであれば、それはファイルへのパスでなければなりません。ファイルをアップロードしてから読む必要があります。多くのファイル。 –

+1

はい、開くファイルに基づいて接続文字列を作成できます。どうしたの? –

答えて

2

かもしれあなたの正確な要件に応じて、あなたが開きたいファイルの名前に基づいて接続文字列を構築することにより、複数のファイルにアクセスすることができます。次のようなものは動作するはずです:

XLSXについて:

var connString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES\";", fileName); 

XLSについて:fileNameは開きたいファイルを識別

var connString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";", fileName); 

0

のようなサードパーティのライブラリを使用することができますXLSXファイルの場合はCOM

  • に対処する必要が必要です私は最近Linq To Excelで成功しました。良いオプション

    OLEDBを使用して

    http://code.google.com/p/linqtoexcel/

  • 0

    私はExcel Data Readerを使用していますが、これは非常にうまく機能しています。確かにそれは卓上アプリケーションで行われていますが、ASP.netアプリケーションでも同様に動作するはずです。

    1

    oledbプロバイダーが動作しますが、いくつかの不具合があります。 64ビットバージョンのドライバを実行していない場合は、列の制限があります。 64ビットを実行している場合は、32ビットオフィス製品をシステムにインストールすることはできません。私は HKLM \ SOFTWARE \ Wow5432Node \マイクロソフト\ジェット\ 4.0 \エンジン\エクセル がゼロ に等しい値TypeGuessRowsを設定し、レジストリに設定をお勧めし

    これはタイプを決定するために、すべての行をスキャンするドライバーが発生します。最初の列の行のX個の行に数値が入っていて、その後に文字列がある場合、その型は数値とみなされ、文字列を含むものはすべて消えてnullになります。 ex。

     
    zipcode 
    -------- 
    39934 
    
    18883 
    
    28472 
    
    52256-1252 
    

    最後の行は、最初の数は数字であると考えられるため、nullに変換されます。その形式に適合しないものはnullに変換されます。

    したがって、おそらくoledbを使用できますが、ほんの数個の回避策を検討してください。

    0

    オープンソースNPOI libraryは、Webサーバー上でExcelを実行する必要なしに、Excelファイル(および他のOfficeファイル形式)から読み書きするための非常に包括的な機能を提供します。

    現在、XLSXファイルは処理されません。