181

C# の ASP.NET アプリケーションの 1 つで、特定のデータ コレクション (SubSonic コレクション) を取得し、それを Excel にエクスポートします。また、Excel ファイルを特定の形式でインポートしたいと考えています。この目的に使用できるライブラリを探しています。

要件:

  • Excel 2007 ファイル (Excel 2003 は 64,000 行以上をサポートしていますか? それ以上必要です。)
  • サーバーにExcelは必要ありません
  • 型指定されたコレクションを受け取り、可能であれば、数値フィールドを Excel の数値として配置しようとします。
  • 大きなファイル (100k から 10M) に適しています - 十分に高速です。
  • GUID のエクスポート時にクラッシュしません!
  • 無駄な費用はかかりません (aspose のようなエンタープライズ ライブラリはありません)。無料は常に素晴らしいですが、商用ライブラリになる可能性があります。

おすすめの図書館は?大量のデータに使用したことがありますか? 他の解決策はありますか?

現在、後で Excel によって読み込まれる HTML を生成する単純なツールを使用していますが、いくつかの機能が失われています。グラフなどを生成する必要はありません。生データをエクスポートするだけです。

フラットな CSV ファイルを考えていますが、Excel はお客様の要件です。Excel との間で変換するツールがあれば、CSV を直接操作できます。Excel 2007 が xml ベースの (および圧縮された) ファイル形式であることを考えると、この種のライブラリは簡単に見つけられると思います。しかし、私にとって最も重要なのは、あなたのコメントや意見です。


編集: 皮肉なことに、私の意見では、投票数が最も多い回答に従って、最高の Excel インポート&エクスポート ライブラリはエクスポートではありません。これはすべてのシナリオに当てはまるわけではありませんが、私の場合はそうです。XLS ファイルは 64k 行のみをサポートします。XLSX は 1M までサポートします。私が試した無料のライブラリは、パフォーマンスが悪い (20 万行の場合、1 行をロードするのに 1 秒かかる) ことが特徴です。高速な XLSX<->CSV 変換ルーチンだけが必要な場合に提供される価値に対して高すぎると感じているため、有料のものは試していません。

4

20 に答える 20

41

コードを最大限に制御できるという理由だけで、フラットな csv ファイルに手を差し伸べるつもりです。行を読み込んで一度に 1 つずつ処理するようにしてください (ドキュメントを最後まで読み込んで分割すると、すべてのメモリが消費されます。書き込みと同じように、ストリームアウトします)。

はい、ユーザーはそれを処理する前に Excel で CSV として保存する必要がありますが、おそらくこの制限はトレーニングを行い、ページで明確な指示を提供することで克服できますか?

最後に、顧客にエクスポートするときに、MIME タイプを text/csv に設定すると、通常、Excel はそのタイプにマップされるため、ユーザーには「Excel ファイル」のように見えます。

于 2009-01-14T23:34:23.583 に答える
41

最初の回答以来、Open XML SDKを発見しました。とりわけ、スプレッドシート オブジェクトに対して厳密に型指定されたクラスを提供し、操作がかなり簡単に思えます。プロジェクトの 1 つでレポートに使用する予定です。残念ながら、バージョン 2.0 は 2009 年後半または 2010 年までリリースされない予定です。

于 2009-02-11T04:16:56.313 に答える
35

商用プロジェクトの LGPL の下で無料の ExcelPackage の最後のバージョンは、https: //www.nuget.org/packages/EPPlus/4.5.3.3 です。

最新かつ最高のものが必要な場合は、https ://epplussoftware.com/en/LicenseOverview/ から商用ライセンスを入手できます。

私のアプリケーションは一部のデータをExcel-template 2007にエクスポートする必要があるため、Excelへのエクスポート機能とまだ戦っています

このプロジェクトは私には問題ないように思えます。開発者はバグや問題に非常に敏感です。

于 2010-04-28T05:54:33.700 に答える
18

私はClosedXMLを使用してきましたが、うまく機能します。

ClosedXML を使用すると、開発者は Excel 2007/2010 ファイルを簡単に作成できます。これは、面倒な XML ドキュメントに対処することなく、(VBA に似た) ファイルを操作する優れたオブジェクト指向の方法を提供します。C# や Visual Basic (VB) などの任意の .NET 言語で使用できます。

于 2011-11-07T13:31:45.370 に答える
14

SpreadsheetGear for .NETは、CSV / XLS/XLSXなどの読み取りと書き込みを行います。

ここでC#およびVBソースコードを含むライブASP.NETサンプルを確認し、ここから無料試用版をダウンロードできます

もちろん、SpreadsheetGearはASP.NETでExcelワークブックをインポート/エクスポートするのに最適なライブラリだと思いますが、偏見があります。このページの右側で、お客様の声をご覧いただけます。

免責事項:私はSpreadsheetGearLLCを所有しています

于 2009-08-29T18:26:39.100 に答える
13

NPOI for Excel 2003 オープン ソース http://www.leniel.net/2009/07/creating-excel-spreadsheets-xls-xlsx-c.html

于 2010-02-24T08:35:23.537 に答える
5

CSV エクスポートはシンプルで、実装が簡単で、高速です。ただし、注目に値する潜在的な問題が 1 つあります。Excel (2007 まで) は、CSV ファイルの先頭のゼロを保持しません。これにより、郵便番号、製品 ID、および数値を含むその他のテキスト データが文字化けします。Excel に値を正しくインポートさせるためのトリックが 1 つあります (私の記憶が正しければ、デリミタとプレフィックス値に = 記号を使用します。たとえば、..,="02052",...)。CSV を使用して後処理タスクを実行するユーザーがいる場合、ファイルを CSV に保存するのではなく、形式を XLS に変更する必要があることに注意する必要があります。その場合、先行ゼロは永久に失われます。

于 2009-01-31T04:26:42.197 に答える
5

過去にFlexcelを使用したことがあり、素晴らしかったです。しかし、これはプログラムで Excel ワークシートを作成および更新するためのものでした。

于 2009-01-14T20:33:33.840 に答える
4

何年もの間、私はこれにJExcelを使用してきました。これは優れたオープンソース Java プロジェクトです。また、J# を使用してコンパイルすることで .NET 対応でした。また、この化身で大きな成功を収めました。しかし最近、Excel 出力を作成する 64 ビット IIS アプリケーションをサポートするために、コードをネイティブ .NET に移行する必要がありました。32 ビットの J# バージョンはロードされませんでした。

CSharpJExcel のコードは LGPL であり、JExcel SourceForge サイトに展開する準備をしている間、現在このページで入手できます。VS2005 または VS2008 でコンパイルされます。元の JExcel ドキュメントの例は、そのまま .NET バージョンに移行します。

ここの誰かに役立つことを願っています。

于 2010-03-17T19:02:10.390 に答える
3

私は長い間 Excel Jetcell を使用してきましたが、本当にお勧めできます。 http://www.devtriogroup.com/exceljetcell

  • 市販品
  • Excel ファイル XLS & XLSX
  • ピュアネット内の自社エンジンをベースに。
于 2011-04-13T07:20:13.747 に答える
3

次のサイトは、DataTable、DataSet、または List<> を "適切な" Excel 2007 .xlsx ファイルにエクスポートする方法を示しています (.csv ファイルをエクスポートして Excel で開くのではなく)。

OpenXML ライブラリを使用するため、サーバーに Excel をインストールする必要 はありません。

Mikes ナレッジ ベース - ExportToExcel

すべてのソース コードは無料で提供され、デモ アプリケーションも提供されています。

独自のアプリケーションに追加するのは非常に簡単です。関数を 1 つ呼び出し、Excel ファイル名とデータ ソースを渡すだけです。

DataSet ds = CreateSampleData();
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);

お役に立てれば。

于 2011-12-01T12:25:15.303 に答える
2

これがかなり遅いことはわかっていますが、 xPortTools.Net からxPorter (書き込み) とxlReader (読み取り)に答えなければならないと感じています。私たちはかなりの数のライブラリをテストしましたが、パフォーマンスの点でほとんどのものはありませんでした (ここでは数百万行を数秒で書き込むことについて話しているのです)。これらの製品について十分に良いことを言うことはできません!

于 2011-06-03T00:08:15.900 に答える
2

私は CSharpJExcel を試しましたが、少なくともドキュメントが利用可能になるまではお勧めしません。開発者のコ​​メントに反して、これは直接のネイティブ ポートではありません。

于 2010-10-22T01:26:11.383 に答える
2

使用できますMicrosoft.Jet.OLEDB.4.0

于 2009-05-28T17:17:47.230 に答える
2

ExcelPackageプロジェクトを確認してください。Excel 2007 の Office Open XML ファイル形式を使用しており、軽量でオープン ソースです...

于 2009-01-14T20:24:15.510 に答える
1

次のライブラリを試すことができます。これは非常に簡単で、MicrosoftのOpen XML SDKの軽いラッパーです(セカンダリExcelファイルからフォーマット、スタイル、さらにはワークシート全体を再利用することもできます):http: //officehelper.codeplex.com

于 2012-02-24T16:21:04.430 に答える
1

同様のニーズを特定しました。そして、ユーザーエクスペリエンスを考慮することが重要だと思います。

私たちはほとんど同じことに沿って脇道にそれました:

  1. スプレッドシート ファイルの準備/作業
  2. ファイルを保存
  3. インポートファイル
  4. システム内のデータを操作する

... ワークフロー

Add-in Expressを使用すると、面倒な VSTO をいじることなく、Excel 内にボタンを作成できます。次に、ワークフローは次のようになります。

  1. スプレッドシート ファイルの準備/作業
  2. ファイルのインポート ( Excel 内のボタンを使用)
  3. システム内のデータを操作する

ボタンの背後にあるコードで "ネイティブ" Excel API を使用し (アドイン エクスプレス経由)、受信者システムに直接プッシュします。開発者やユーザーにとってこれ以上の透明性はありません。検討する価値があります。

于 2011-01-26T09:46:38.093 に答える
1

Yogesh Jagota による CodeProject に関する非常に優れた記事とライブラリがあります。

Excel XML インポート/エクスポート ライブラリ

SQLクエリやその他のデータソースからExcelにデータをエクスポートするために使用しました-私にとってはうまく機能します。

乾杯

于 2009-01-14T20:40:24.760 に答える
0

Apache POI Java ライブラリはどうですか。Excel では使用していませんが、Word 2007 では使用していました。

于 2010-10-22T01:30:17.287 に答える
0

Spreadsheetgear は、私たちが見つけて使用している最高の商用ライブラリです。私たちの会社は多くの高度な Excel のインポートとエクスポートを行っており、Spreadsheetgear は単純な CSV でできることをはるかに超えた多くの高度な Excel 機能をサポートしており、高速です。無料でも安価でもありませんが、サポートが優れているため、それだけの価値があります。問題が発生した場合、開発者が実際に対応します。

于 2010-07-20T16:35:18.213 に答える