web-dev-qa-db-ja.com

Excelのインポートとエクスポート-最高のライブラリは何ですか?

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

要件:

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

どのライブラリをお勧めしますか?大量のデータに使用しましたか?他の解決策はありますか?

現在、私は後でExcelによってロードされるHTMLを生成するシンプルなツールを使用していますが、一部の機能を失い、さらにExcelをロードすると文句を言います。生データをエクスポートするだけで、チャートなどを生成する必要はありません。

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


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

174
Jason Kealey

あなたがコードを最大限に制御しているという理由だけで、フラットなcsvファイルに手を出すつもりです。行を読み取って一度に1つずつ処理することを確認してください(文書を最後まで読んで分割すると、すべてのメモリが消費されます-書き込みと同じように、ストリームで出力されます)。

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

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

38
tsimon

私は最初の答えから Open XML SDK を発見しました。これは、スプレッドシートオブジェクトに対して強く型付けされたクラスなどを提供し、操作がかなり簡単なようです。私のプロジェクトの1つでレポートに使用します。残念ながら、バージョン2.0は2009年または2010年後半までリリースされる予定はありません。

40
cdonner

excelPackageの新しいバージョンはこちら http://EPPlus.codeplex.com

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

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

34
Mohannad Otaibi

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

ClosedXMLを使用すると、開発者はExcel 2007/2010ファイルを簡単に作成できます。 XMLドキュメントの煩わしさを処理せずに(VBAと同様に)ファイルを操作するためのNiceオブジェクト指向の方法を提供します。 C#やVisual Basic(VB)などの.NET言語で使用できます。

17
Druid

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

C#およびVBソースコードを使用したライブASP.NETサンプルを見ることができます here および無料トライアルをダウンロード here

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

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

14
Joe Erickson
13
stormwild

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

5
cdonner

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

5
Duncan

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

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

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

4
Chris Laforet

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

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

Mikes Knowledge Base-ExportToExcel

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

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

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

お役に立てれば。

3
Mike Gledhill

私は長い間Excelジェットセルで働いてきましたが、本当にお勧めできます。 http://www.devtriogroup.com/exceljetcell

  • 市販品
  • ExcelファイルXLSおよびXLSX
  • 純粋なネットの独自のエンジンに基づいています。
3
Robert Tyson

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

2
RG.

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

2
CMS

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

2
user483711

私はこれがかなり遅いことを知っていますが、私は xPorter (執筆)および xlReader (読書) xPortTools.Net に答えざるを得ないと感じています。かなりの数のライブラリをテストしましたが、パフォーマンスの点で何も近づきませんでした(ここでは数秒で数百万の行を書くことについて話しています)。これらの製品について十分なことを言うことができません!

2
DanP

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

私たちはほぼ同じ方向に追いやられました。

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

...ワークフロー

アドインエクスプレス を使用すると、VSTOで面倒なことをすることなく、Excel内にボタンを作成できます。次に、ワークフローは次のようになります。

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

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

1
Program.X

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

1
aron.sinoai

Yogesh JagotaによるCodeProjectには、かなり良い記事とライブラリがあります。

Excel XML Import-Export Library

これを使用して、SQLクエリやその他のデータソースからExcelにデータをエクスポートしました。

乾杯

1
marc_s

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

0
pilavdzice

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

0
harijay