Qualcuno ha .Net Excel IO componente di riferimento?
-
08-06-2019 - |
Domanda
Ho la necessità di accedere a cartelle di lavoro di Excel da .Net.So tutto sui diversi modi di farlo (l'ho scritto in un post del blog), e so che l'utilizzo di un nativo .Net componente sta per essere il più veloce.Ma la domanda è, quali componenti vince?Qualcuno l'ha paragonata a loro?Sto usando Syncfusion XlsIO, ma che è molto lento per alcune operazioni fondamentali (come l'eliminazione di righe in una cartella di lavoro contenente migliaia di intervalli con Nome).
Soluzione
Non ho fatto corretta parametri di riferimento, ma ho provato diversi altri componenti,e ha scoperto che SpreadsheetGear era notevolmente più veloce rispetto a XlsIO che usavo prima.Ho scritto alcuni dei miei risultati in questo post
Altri suggerimenti
Non posso aiutarti con la tua domanda originale, ma siete consapevoli che è possibile accedere a file di Excel utilizzando un OleDbConnection, e quindi trattarlo come un database?È quindi possibile leggere i fogli di lavoro in una DataTable, eseguire tutte le modifiche necessarie per i dati nell'applicazione, e quindi salvare di nuovo tutto per il file utilizzando un OleDbConnection.
Sì ma io non ho intenzione di pubblicarli entrambi fuori una cortesia a Syncfusion (ti chiedono di non pubblicare parametri di riferimento), perché io non sono un esperto tester quindi i miei test sono probabilmente un po ' viziata, ma soprattutto perché quello che in realtà benchmark fa una differenza enorme per chi vince e da quanto.
Ho preso una delle loro "prestazioni" esempi e aggiunto la stessa routine in EPPlus per confrontarli.XLSIO di circa il 15% più veloce con solo semplice inserti, a seconda riga/colonna ratio (ho provato un paio di), l'utilizzo della memoria è sembrato molto simile.Quando ho aggiunto una routine che, dopo tutte le righe sono state aggiunte, eliminate ogni 10 righe e poi inserita una nuova riga 2 righe da - XLSIO era significativamente più lento che in quella circostanza.
Un generico punto di riferimento è sostanzialmente inutile.Hai bisogno di provare uno contro l'altro in scenari specifici in uso.
Sono stato con EPPlus per un paio di anni è stato bene, non ricordo le grida di esso.
Più degno della vostra considerazione è la funzionalità, il supporto (Syncfusion sono stato bene, nella mia esperienza), la Documentazione, l'accesso al codice sorgente, se è importante, e, soprattutto, quanto il senso di API fa per voi, la sintassi può essere molto diversa.es.Stili Con Nome
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();
EPPlus
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;