C#のASP.NETアプリケーションの1つで、特定のデータコレクション(SubSonicコレクション)を取得し、Excelにエクスポートします。また、特定の形式のExcelファイルをインポートする必要があります。この目的に使用できるライブラリを探しています。
要件:
どのライブラリをお勧めしますか?大量のデータに使用しましたか?他の解決策はありますか?
現在、私は後でExcelによってロードされるHTMLを生成するシンプルなツールを使用していますが、一部の機能を失い、さらにExcelをロードすると文句を言います。生データをエクスポートするだけで、チャートなどを生成する必要はありません。
フラットなCSVファイルを考えていますが、Excelは顧客の要件です。 Excelとの間で変換するツールがあれば、CSVを直接操作できます。 Excel 2007はxmlベース(およびzip形式)のファイル形式であるため、この種のライブラリは簡単に見つけられるはずです。しかし、私にとって最も重要なのはあなたのコメントと意見です。
編集:皮肉なことに、私の意見では、最も多くの票を投じた答えに従って、最高のExcelインポート&エクスポートライブラリはまったくエクスポートされません。これはすべてのシナリオに当てはまるわけではありませんが、私の場合です。 XLSファイルは64k行のみをサポートします。 XLSXは最大1Mまでサポートします。私が試した無料のライブラリは、パフォーマンスが悪いことを特徴としています(20万行ある場合、1秒で1行をロードします)。必要なのは高速なXLSX <-> CSV変換ルーチンだけであるときに、提供する価値が高すぎると感じているので、有料のものは試していません。
あなたがコードを最大限に制御しているという理由だけで、フラットなcsvファイルに手を出すつもりです。行を読み取って一度に1つずつ処理することを確認してください(文書を最後まで読んで分割すると、すべてのメモリが消費されます-書き込みと同じように、ストリームで出力されます)。
はい、ユーザーは処理する前にExcelでCSVとして保存する必要がありますが、おそらくこの制限はトレーニングし、ページで明確な指示を提供することで克服できますか?
最後に、顧客にエクスポートするときに、MIMEタイプをtext/csvに設定すると、Excelは通常そのタイプにマップされるため、ユーザーには「Excelファイル」のように見えます。
私は最初の答えから Open XML SDK を発見しました。これは、スプレッドシートオブジェクトに対して強く型付けされたクラスなどを提供し、操作がかなり簡単なようです。私のプロジェクトの1つでレポートに使用します。残念ながら、バージョン2.0は2009年または2010年後半までリリースされる予定はありません。
excelPackageの新しいバージョンはこちら http://EPPlus.codeplex.com
アプリケーションは一部のデータをExcel-template 2007にエクスポートする必要があるため、Excelへのエクスポート機能との戦いを続けています。
このプロジェクトは私にはいいようで、開発者はバグや問題に非常に敏感です。
ClosedXML を使用してきましたが、うまく機能します!
ClosedXMLを使用すると、開発者はExcel 2007/2010ファイルを簡単に作成できます。 XMLドキュメントの煩わしさを処理せずに(VBAと同様に)ファイルを操作するためのNiceオブジェクト指向の方法を提供します。 C#やVisual Basic(VB)などの.NET言語で使用できます。
SpreadsheetGear for .NET CSV/XLS/XLSXの読み取りと書き込みなどを行います。
C#およびVBソースコードを使用したライブASP.NETサンプルを見ることができます here および無料トライアルをダウンロード here 。
もちろん、SpreadsheetGearは、ASP.NETでExcelブックをインポート/エクスポートするのに最適なライブラリだと思いますが、偏見があります。 このページ の右側に、一部のお客様の発言を見ることができます。
免責事項:私はSpreadsheetGear LLCを所有しています
NPOI For Excel 2003オープンソース http://www.leniel.net/2009/07/creating-Excel-spreadsheets-xls-xlsx-c.html
CSVエクスポートはシンプルで、実装が簡単で、高速です。ただし、注目に値する潜在的な問題が1つあります。 Excel(2007年まで)では、CSVファイルの先行ゼロは保持されません。これにより、郵便番号、製品ID、および数値を含むその他のテキストデータが文字化けします。 Excelに値を正しくインポートさせるための1つのトリックがあります(正しく覚えていれば、区切り記号とプレフィックス値に=記号を使用します(例:..、= "02052"、...)。 CSVを使用して後処理タスクを実行するユーザーがいる場合、ファイルをCSVに保存せずに、形式をXLSに変更する必要があることに注意する必要があります。その場合、先行ゼロは永久に失われます。
過去に Flexcel を使用しましたが、それは素晴らしかったです。しかし、これはプログラムでExcelワークシートを作成および更新するためのものです。
長年、このために JExcel を使用してきました。これは優れたオープンソースJavaプロジェクトです。また、J#を使用してコンパイルすることにより.NETに対応し、この化身でも大きな成功を収めました。ただし、最近、Excel出力を作成する64ビットIISアプリケーションをサポートするために、コードをネイティブ.NETに移行する必要がありました。 32ビットJ#バージョンはロードされません。
CSharpJExcelのコードはLGPLであり、現在 this ページで入手できますが、JExcel SourceForgeサイトにデプロイする準備をしています。 VS2005またはVS2008でコンパイルします。元のJExcelドキュメントの例は、そのまま.NETバージョンに移行します。
ここで誰かに役立つことを願っています。
次のサイトは、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);
お役に立てれば。
私は長い間Excelジェットセルで働いてきましたが、本当にお勧めできます。 http://www.devtriogroup.com/exceljetcell
Microsoft.Jet.OLEDB.4.0
を使用できます
ExcelPackage プロジェクトを確認してください。Excel2007のOffice Open XMLファイル形式を使用しています。軽量でオープンソースです...
私はCSharpJExcelを試しましたが、少なくともいくつかのドキュメントが利用可能になるまではお勧めしません。開発者のコメントに反して、それはnotのネイティブポートです。
私はこれがかなり遅いことを知っていますが、私は xPorter (執筆)および xlReader (読書) xPortTools.Net に答えざるを得ないと感じています。かなりの数のライブラリをテストしましたが、パフォーマンスの点で何も近づきませんでした(ここでは数秒で数百万の行を書くことについて話しています)。これらの製品について十分なことを言うことができません!
同様のニーズを特定しました。そして、ユーザーエクスペリエンスを考慮することが重要だと思います。
私たちはほぼ同じ方向に追いやられました。
...ワークフロー
アドインエクスプレス を使用すると、VSTOで面倒なことをすることなく、Excel内にボタンを作成できます。次に、ワークフローは次のようになります。
ボタンの背後にあるコードに(ネイティブの)Excel API(アドインエクスプレス経由)を使用させ、受信者システムに直接プッシュします。開発者やユーザーにとって、これ以上透明性を高めることはできません。検討する価値があります。
次のライブラリを試すことができます。それは十分に簡単で、MicrosoftのOpen XML SDKの単なる軽いラッパーです(セカンダリExcelファイルから書式設定、スタイル、ワークシート全体を再利用することさえできます): http:// officehelper .codeplex.com
Yogesh JagotaによるCodeProjectには、かなり良い記事とライブラリがあります。
Excel XML Import-Export Library
これを使用して、SQLクエリやその他のデータソースからExcelにデータをエクスポートしました。
乾杯
Spreadsheetgearは、私たちが見つけて使用している最高の商用ライブラリです。当社は、Excelの高度なインポートとエクスポートを数多く行っており、Spreadsheetgearは、シンプルなCSVでできることをはるかに超える多くの高度なExcel機能をサポートしており、高速です。それは無料または非常に安価ではありませんが、サポートが優れているので価値があります。あなたが問題に遭遇した場合、開発者は実際にあなたに対応します。
Apache POI Javaライブラリはどうですか。 Excelでは使用していませんが、Word 2007では使用しました。