2008-08-18 13 views
5

मैं नेट से एक्सेल कार्यपुस्तिका का उपयोग करने की आवश्यकता होगी, कर रहा हूँ। मैं सभी (मैं एक blog post में उन्हें लिखा है) यह कर के विभिन्न तरीकों के बारे में पता है, और मुझे पता है कि एक देशी नेट घटक का उपयोग सबसे तेजी से होने जा रहा है। लेकिन सवाल यह है कि, कौन सा घटक जीतता है? क्या किसी ने उन्हें बेंचमार्क किया है? मैं सिंकफ्यूजन XlsIO का उपयोग कर रहा हूं, लेकिन कुछ महत्वपूर्ण संचालन के लिए यह बहुत धीमा है (जैसे हजारों नामित श्रेणियों वाली कार्यपुस्तिका में पंक्तियां हटाना)।क्या किसी के पास .NET Excel IO घटक मानक हैं?

उत्तर

5

मैं किसी भी उचित मानक नहीं किया है, लेकिन मैं कई अन्य घटक बाहर करने की कोशिश की, और पाया कि SpreadsheetGear XlsIO जो मैंने पहले उपयोग कर रहा था की तुलना में काफी तेजी से किया गया था। मैं इस post

1

अपने मूल प्रश्न के साथ आपकी मदद कर सकती है, लेकिन आप जानते हैं कि आप एक OleDbConnection का उपयोग कर Excel फ़ाइलों का उपयोग कर सकते हैं, और इसलिए एक डेटाबेस के रूप में यह इलाज? फिर आप एक DataTable में कार्यपत्रकों पढ़ सकते हैं सभी परिवर्तनों को आप अपने आवेदन में डेटा की जरूरत है करते हैं, और फिर एक OleDbConnection का उपयोग कर फ़ाइल को यह सब वापस बचाने के।

+0

पॉल, धन्यवाद। मुझे इसके बारे में पता था (मुझे शायद इसे अपने ब्लॉग पोस्ट में शामिल करना चाहिए)। हालांकि इस मामले में, यह वह डेटा नहीं है जिसकी मुझे वास्तव में आवश्यकता है। यह सेल शैली और स्वरूपण, आदि जैसे चीजें हैं सैम –

0

हाँ में मेरे निष्कर्ष के कुछ ऊपर लिखा है, लेकिन मैं उन दोनों को Syncfusion के लिए एक शिष्टाचार से बाहर प्रकाशित करने के लिए (वे मानक प्रकाशित नहीं करने के लिए कह) नहीं जा रहा हूँ, क्योंकि मैं एक अनुभवी नहीं हूँ परीक्षक इसलिए मेरे परीक्षण शायद कुछ हद तक त्रुटिपूर्ण हैं, लेकिन अधिकतर क्योंकि आप वास्तव में बेंचमार्क जो जीतते हैं और कितना बड़ा योगदान देता है।

मैं अपने "प्रदर्शन" उदाहरणों में से एक में ले लिया और उनकी तुलना करने के EPPlus में एक ही दिनचर्या गयी। एक्सएलएसआईओ पंक्ति/कॉलम अनुपात (मैंने कुछ कोशिश की) के आधार पर, केवल सीधी आवेषण के साथ लगभग 15% तेज था, स्मृति उपयोग बहुत समान लग रहा था। जब मैंने एक दिनचर्या जोड़ दी, तो सभी पंक्तियों को जोड़ने के बाद, प्रत्येक 10 वीं पंक्ति को हटा दिया गया और फिर उसमें से एक नई पंक्ति 2 पंक्तियां डाली गईं - XLSIO उस परिस्थिति में काफी धीमी थी।

एक सामान्य बेंचमार्क आपके लिए बहुत बेकार है। आपको उन विशिष्ट परिदृश्यों में एक दूसरे के खिलाफ प्रयास करने की आवश्यकता है जो आप उपयोग करते हैं।

मैं कुछ वर्षों से ईपीप्लस का उपयोग कर रहा हूं और प्रदर्शन ठीक रहा है, मुझे इस पर चिल्लाना याद नहीं है।

आपके विचार के अधिक योग्यता कार्यक्षमता, समर्थन (सिंकफ्यूजन अच्छा है, मेरे अनुभव में), प्रलेखन, स्रोत कोड तक पहुंच यदि यह महत्वपूर्ण है, और - महत्वपूर्ण बात यह है कि एपीआई आपको कितनी समझ में आता है, वाक्यविन्यास काफी अलग हो सकता है। जैसे। नामांकित शैलियाँ

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; 
संबंधित मुद्दे