5

.Net から Excel ワークブックにアクセスする必要があります。私はそれを行うためのさまざまな方法をすべて知っており (ブログ投稿にそれらを書きました)、ネイティブの .Net コンポーネントを使用するのが最も高速であることも知っています。しかし問題は、どちらのコンポーネントが勝つかということです。誰かがそれらをベンチマークしましたか? 私は Syncfusion XlsIO を使用してきましたが、いくつかの重要な操作 (数千の名前付き範囲を含むワークブック内の行の削除など) では非常に遅いです。

4

3 に答える 3

5

適切なベンチマークは行っていませんが、他のコンポーネントをいくつか試してみたところ、以前使用していた XlsIO よりもSpreadsheetGearの方がかなり高速であることがわかりました。私はこの投稿で私の発見のいくつかを書きました

于 2008-08-21T11:57:50.200 に答える
1

元の質問にはお答えできませんが、OleDbConnection を使用して Excel ファイルにアクセスできるため、それをデータベースとして扱うことができることをご存知ですか? 次に、ワークシートを DataTable に読み込み、アプリケーション内のデータに必要なすべての変更を実行してから、OleDbConnection を使用してすべてをファイルに保存します。

于 2008-08-18T12:44:54.637 に答える
0

はい、しかし私は経験豊富なテスターではないため、Syncfusion への礼儀として両方を公開するつもりはありません (ベンチマークを公開しないように求められます)。誰がどれだけ勝つかは大きな違いです。

私は彼らの「パフォーマンス」の例の 1 つを取り上げ、それらを比較するために EPPlus に同じルーチンを追加しました。XLSIO は、単純な挿入だけで約 15% 高速で、行/列の比率にもよりますが (いくつか試してみました)、メモリ使用量は非常に似ているように見えました。すべての行が追加された後、10 行ごとに削除し、そこから 2 行上に新しい行を挿入するルーチンを追加すると、その状況では XLSIO が大幅に遅くなりました。

一般的なベンチマークは、ほとんど役に立ちません。使用する特定のシナリオで、それらを相互に試す必要があります。

私は EPPlus を数年間使用してきましたが、パフォーマンスは良好でした。怒鳴った覚えはありません。

より検討に値するのは、機能、サポート (私の経験では Syncfusion は良好でした)、ドキュメント、ソース コードへのアクセス (それが重要な場合)、そして - 重要なことに - API があなたにとってどれほど意味があるか、構文はかなり違います。例えば。名前付きスタイル

XLSIO

headerStyle.BeginUpdate();
workbook.SetPaletteColor(8, System.Drawing.Color.FromArgb(255, 174, 33));
headerStyle.Color = System.Drawing.Color.FromArgb(255, 174, 33);
headerStyle.Font.Bold = true;
headerStyle.Borders[ExcelBordersIndex.EdgeLeft]  .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeRight] .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeTop]   .LineStyle = ExcelLineStyle.Thin;
headerStyle.Borders[ExcelBordersIndex.EdgeBottom].LineStyle = ExcelLineStyle.Thin;
headerStyle.EndUpdate();

EPプラス

ExcelNamedStyleXml headerStyle = xlPackage.Workbook.Styles.CreateNamedStyle("HeaderStyle");
headerStyle.Style.Fill.PatternType = ExcelFillStyle.Solid; // <== needed or BackgroundColor throws an exception
headerStyle.Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.FromArgb(255, 174, 33));
headerStyle.Style.Font.Bold = true;
headerStyle.Style.Border.Left.Style   = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Right.Style  = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Top.Style    = ExcelBorderStyle.Thin;
headerStyle.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
于 2017-11-06T10:55:06.500 に答える