Excelファイルを読み書きできるプログラムを作成する必要があります。OleDB を使用するか、Excel オブジェクトを使用する必要がありますか? それぞれの利点は何ですか? また、これを実装するためにどこで読むことができますか?
7 に答える
私は最近これを行う必要があり、NPOI ( http://npoi.codeplex.com/ ) が最善の策であることがわかりました。特に、クライアントにファイルタイプに関する紛らわしいエラーをスローしないバイナリ .xls ファイルを生成する必要があったためです。
詳細については、このブログ投稿を参照してください。また、これは既存のフレームワークの移植であるため、移植に適用可能な元のフレームワークに利用できる多くのヘルプがあることもわかります。
Excel オートメーションは面倒な場合があり、プログラムが Web サーバー上で実行されることを意図している場合は役に立ちませんが、Excel ファイルの読み取り、変更、および作成を行うための完全なアクセス権が付与されます。
OLEDB ドライバーの使用は、Excel 1998-2003 ファイルでのみ機能し、Excel 2007 では機能しません。機能のサブセットは限られています (シートと名前付き領域を、データベースのように読み書きできる「テーブル」として扱います。書式設定は制御できません)。 、式など)、いくつかの重大な制限がありますが、ASP.NET アプリケーションでは問題なく動作します。
(OLEDB 経由で Excel 2007 の OOXML ファイル (xlsx) にアクセスするためにダウンロードできる別のドライバーがあります。古いドライバーと比較して、その機能や制限がどのようなものかはわかりません。)
アプリケーションが ASP.NET で実行されている場合の別のオプションは、Excel ファイルを読み書きするためのサードパーティ ライブラリを入手することです。一部はオープンソース (通常は Excel 2002 ~ 2007 の Excel XML ファイルのみを読み書きするもので、NPOI は注目すべき例外の 1 つです) もあれば、非常に高価なものもあります。
やりたくない唯一のことは、独自の Excel BIFF 形式 (標準の 1997-2003 ファイル形式) リーダー/ライターを実装しようとすることです。ファイル形式は時間の経過とともに進化しており、単なる人間にとっては複雑すぎます。
サーバーのアプリケーションでExcel ファイルを読み書きする場合は、 Excel Jetcell .NET コンポーネントを使用できます。
DataSet、DataTable から Excel 形式にデータをエクスポートする便利な機能があります。また、Excel ファイル (xls、xlsx) を保存したり、開発者により多くの機会を開くストリームとして Excel を表すこともできます。その他のC# Excel ファイルのコード サンプルを参照してください。
書き込みについては、考えられる簡単な回避策があり、作業が楽になります.... すべてをカンマ区切りのテキスト ファイルに書き込み、csv として保存します。次に、csv を引数としてシェル コマンドを使用して Excel を起動します。ほら、すぐに Excel にエクスポートできます。
よろしく
SpreadsheetGear for .NETは、Excel ワークブック (xls および xlsx) を読み書きできる Excel 互換のスプレッドシート コンポーネントであり、Excel、OleDb、または .NET ライブラリ以外のものには依存しません。
ここでいくつかのライブ サンプルを確認し、ここで無料試用版をダウンロードできます。
免責事項: 私は SpreadsheetGear LLC を所有しています
おそらく、無料のコンポーネント「CarlosAg」の機能で十分ですか? マシンに Excel をインストールする必要はありません。私はそれを使用し、それに満足しています。
Excel ファイルの読み取り/書き込みにサード パーティのツールは必要ありません。必要なものはすべて名前空間 Microsoft.Office.Interop.Excel に既に含まれています。
最初にExcelファイルを作成し、たとえば..test1.xlsなどの名前を付けます...または必要なコードは次のとおりです。
using Excel = Microsoft.Office.Interop.Excel;
Excel.Application AppName = new Excel.Application();
Excel.Workbook bookName = AppName.Workbooks.Open(C:\....\test1);
Excel.Worksheet sheetName = AppName.Worksheets.get_Item(1);
sheetName.Rows[5].Cells[5].Value = "hello!"; //that writes hello in cell 5,5 in test1.xls
string box;
box = sheetName.Rows[10].Cells[10].Value; //that reads the value of 10,10 cell in test1.xls and place it in box variable