2012-11-26 20 views
9

मैं एक्सेल फ़ाइल में वर्कशीट तक पहुंचने का प्रयास करने के लिए ईपीप्लस लाइब्रेरी की 3.1 रिलीज का उपयोग कर रहा हूं। जब मैं निम्न विधियों में से किसी एक को आज़माता हूं तो मुझे System.ArgumentException : An item with the same key has already been added मिलता है।ईपीप्लस में वर्कशीट तक कैसे पहुंचे?

using (ExcelPackage package = new ExcelPackage(new FileInfo(sourceFilePath))) 
{ 
    var worksheet = package.Workbook.Worksheets[0]; 

    // OR 

    foreach (var excelWorksheet in package.Workbook.Worksheets) 
    ... 
} 

एक्सेप्शन स्टैक:

System.ArgumentException : An item with the same key has already been added. 
    at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) 
    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 
    at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) 
    at OfficeOpenXml.ExcelNamedRangeCollection.Add(String Name, ExcelRangeBase Range) 
    at OfficeOpenXml.ExcelWorkbook.GetDefinedNames() 
    at OfficeOpenXml.ExcelPackage.get_Workbook() 

यह बहुत ही बुनियादी कार्यक्षमता है तो तोड़ा जा की तरह लगता है .. मैं कुछ गलत कर रहा हूँ?

+0

क्या यह संभव है कि एक्सेल फ़ाइल एक 'xls' फ़ाइल मूल रूप से किया गया था? ईपीप्लस केवल 'xlsx' को समझता है। इसे मैन्युअल रूप से पहले 'xlsx' के रूप में सहेजने का प्रयास करें। –

उत्तर

4

प्रश्न में कार्यपुस्तिका ने परिभाषित श्रेणियों का नाम दिया था। ये समस्याएं पैदा कर रहे थे इसलिए मैंने केवल एक डेटा के साथ एक नई xlsx फ़ाइल बनाई और मुझे ठीक से खोलने में सक्षम था।

+0

मुझे पता है कि यह 2 साल पुराना है, लेकिन अगर इससे आपकी समस्या हल हो जाती है, तो आपको अन्य लोगों के लिए इसे हाइलाइट करने में मदद करने के लिए अपना उत्तर स्वीकार करना चाहिए, जो एक ही समस्या हो सकती है – psubsee2003

+0

यह सभी उत्तरों के बीच मेरे लिए एकमात्र संभावित समाधान था। मैंने नामित रेंज हटा दी; यह मदद नहीं की। प्वाइंट यह है कि वर्कशीट्स ऑब्जेक्ट स्वयं ही अपवाद फेंकता है। –

21

मुझे विश्वास है कि एक्सेल सूचकांक 1 नहीं सूचकांक से कार्यपत्रकों करता 0

var worksheet = package.Workbook.Worksheets[0]; 

var worksheet = package.Workbook.Worksheets[1]; 

पहले कार्यपत्रक को पढ़ने के लिए होना चाहिए।

+2

एक्सेल और सुंदर सब कुछ जो उससे जुड़ता है, इंडेक्स 1 से शुरू होता है, नहीं 0 अच्छा अनुस्मारक। धन्यवाद। – Doruk

13

इसके अलावा, आप उन्हें नाम का हवाला प्रबंधन कर सकते हैं:

var worksheet = package.Workbook.Worksheets["Sheet1"]; 
3

कम से कम Epplus साथ 3.1.3.0 आप बस पहले कार्यपत्रक पहुंचने के लिए नीचे का उपयोग कर सकते हैं।

ExcelWorksheet workSheet = excel.Workbook.Worksheets.First(); 
2

सुनिश्चित करें कि दस्तावेज़ बनाया या एमएस एक्सेल के साथ सहेजा (नहीं OpenOffice, Libre कार्यालय, आदि)

संबंधित मुद्दे