سؤال

أنا بحاجة إلى الوصول إلى مصنفات Excel من .صافي.أنا أعرف كل شيء عن طرق مختلفة للقيام بذلك (لقد كتب لهم في بلوق وظيفة) و أنا أعلم أن استخدام الأم .صافي مكون سيكون أسرع.ولكن السؤال هو أي من مكونات يفوز ؟ وقد أي شخص قياسها لهم ؟ لقد تم استخدام Syncfusion XlsIO, لكنها بطيئة جدا لبعض العمليات الرئيسية (مثل حذف الصفوف في المصنف تحتوي على الآلاف من نطاقات مسماة).

هل كانت مفيدة؟

المحلول

أنا لم تفعل أي مناسبة المعايير, ولكن حاولت عدة مكونات أخرى ، وجدت أن SpreadsheetGear كان أسرع بكثير من XlsIO الذي كنت تستخدمه من قبل.لقد كتبت بعض من استنتاجاتي في هذا بعد

نصائح أخرى

لا يمكن أن تساعدك مع سؤالك الأصلي ، ولكن هل أنت على علم أنه يمكنك الوصول إلى ملفات Excel باستخدام OleDbConnection ، وبالتالي التعامل معها على أنها قاعدة البيانات ؟ ثم يمكنك قراءة أوراق العمل إلى DataTable إجراء جميع التغييرات التي تحتاج إلى البيانات في التطبيق الخاص بك ثم قم بحفظ كل شيء مرة أخرى إلى الملف باستخدام OleDbConnection.

نعم ولكن أنا لن تنشر لهم على حد سواء من باب المجاملة إلى Syncfusion (يسألونك عدم نشر المعايير) لأنني لست من ذوي الخبرة تستر حتى بلدي التجارب ربما معيبة إلى حد ما ولكن في الغالب بسبب ما كنت فعلا القياسي فرقا هائلا من يفوز وكيف ذلك بكثير.

أخذت واحدة من "الأداء" أمثلة و أضاف نفس الروتين في 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();

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top