Existe-t-il une limite à la quantité de données pouvant être conservées dans un SpreadsheetGear WorkbookView?

J'ai une application qui prend une table de données d'Excel et l'importe dans mon SpreadsheetGear.WorkbookView incorporé. Je connais les limites de la taille d'une feuille de calcul dans Excel, mais je me demandais si Excel pouvait gérer des sets de données supérieurs à SpreadsheetGear . Quelqu'un at-il déjà rencontré cela avant?

Jake

Je viens de faire un test avec SpreadsheetGear 2012 pour .NET fonctionnant dans une application .NET 4.5 x64 et Excel 2013 x64 RTM à la fois sur Windows 8 x64 avec un overclocké Core i7-980X.

J'ai créé un classur avec 10 millions de formules (1 000 000 lignes et 10 colonnes en utilisant la formule "= RAND ()").

Excel 2013 a créé le classur en 20.18 secondes, utilisé 795MB de RAM et calculé en 0.39 secondes.

SpreadsheetGear 2012 a créé le classur en 0.42 secondes, utilisé 153MB de RAM et calculé en 0.09 secondes.

SpreadsheetGear est limité uniquement par la quantité de memory et est évidemment plus efficace que Excel 2013 en ce qui concerne l'utilisation de la memory, sans parler du fait que SpreadsheetGear 2012 crée et calcule de gros classurs plus rapidement que Excel 2013 – du less dans ce cas.

Vous pouvez download gratuitement l'évaluation de SpreadsheetGear pour .NET.

Avertissement: je possède SpreadsheetGear LLC.

Voici le code que j'ai utilisé pour SpreadsheetGear:

  using System; using SpreadsheetGear; namespace SpreadsheetGearMemTest { class Program { static void Test(IWorkbook workbook, int rows, int cols) { var worksheet = workbook.Worksheets[0]; var cells = worksheet.Cells; var timer = System.Diagnostics.Stopwatch.StartNew(); var startMem = System.GC.GetTotalMemory(true); cells[0, 0, rows - 1, cols - 1].Formula = "=RAND()"; timer.Stop(); var memUsed = System.GC.GetTotalMemory(true) - startMem; var calcTimer = System.Diagnostics.Stopwatch.StartNew(); workbook.WorkbookSet.Calculate(); Console.WriteLine("Creating took {0} seconds and {1}MB, calc took {2} seconds.", timer.Elapsed.TotalSeconds, memUsed / (1024.0 * 1024.0), calcTimer.Elapsed.TotalSeconds); workbook.Close(); } static void Main(ssortingng[] args) { // Get the code JITed. Test(Factory.GetWorkbook(), 100, 10); // Do the test. Test(Factory.GetWorkbook(), 1000000, 10); } } }