2016-04-08 10 views
5

मैं एपप्लस एक्सेल पैकेज का उपयोग कर एक मौजूदा xlsx फ़ाइल को अपडेट करना (एक और शीट जोड़ना और चार्ट जोड़ना) चाहता हूं। हालांकि, मैं निम्नलिखित पंक्ति में एक त्रुटि मिलीएपप्लस भाग पहले से मौजूद है

var pieChart = worksheet.Drawings.AddChart("Chart1", OfficeOpenXml.Drawing.Chart.eChartType.Pie); 

त्रुटि: प्रकार का एक बिना क्रिया का अपवाद 'System.InvalidOperationException' EPPlus.dll अतिरिक्त जानकारी में हुई: भाग पहले से ही मौजूद

कर सकते हैं कोई मेरी मदद करता है? पहले ही, आपका बहुत धन्यवाद।

using (ExcelPackage pck = new ExcelPackage()) 
      { 
     using (FileStream stream = new FileStream("Report.xlsx", FileMode.Open)) 
       { 
        pck.Load(stream); 

        ExcelWorksheet worksheet = pck.Workbook.Worksheets.Add("1"); 

        var data = new List<KeyValuePair<string, int>> 
    { 
     new KeyValuePair<string, int>("Group A", 44613), 
     new KeyValuePair<string, int>("Group B", 36432), 
     new KeyValuePair<string, int>("Group C", 6324), 
     new KeyValuePair<string, int>("Group A", 6745), 
     new KeyValuePair<string, int>("Group B", 23434), 
     new KeyValuePair<string, int>("Group C", 5123), 
     new KeyValuePair<string, int>("Group A", 34545), 
     new KeyValuePair<string, int>("Group B", 5472), 
     new KeyValuePair<string, int>("Group C", 45637), 
     new KeyValuePair<string, int>("Group A", 37840), 
     new KeyValuePair<string, int>("Group B", 20827), 
     new KeyValuePair<string, int>("Group C", 4548), 
    }; 

        //Fill the table 
        var startCell = worksheet.Cells[1, 1]; 
        startCell.Offset(0, 0).Value = "Group Name"; 
        startCell.Offset(0, 1).Value = "Value"; 

        for (var i = 0; i < data.Count(); i++) 
        { 
         startCell.Offset(i + 1, 0).Value = data[i].Key; 
         startCell.Offset(i + 1, 1).Value = data[i].Value; 
        } 

        //Add the chart to the sheet 
        var pieChart = worksheet.Drawings.AddChart("Chart1", OfficeOpenXml.Drawing.Chart.eChartType.Pie); 
        pieChart.SetPosition(data.Count + 1, 0, 0, 0); 
        pieChart.Title.Text = "Test Chart"; 
        pieChart.Title.Font.Bold = true; 
        pieChart.Title.Font.Size = 12; 



        pck.Save(); 
       } 
+1

क्या यह 'चार्ट एक्स' या' चार्ट 1' है? क्या इस कार्यपुस्तिका की अन्य चादरों पर मौजूद पहले से ही 'चार्ट 1' (या चार्ट एक्स जो भी आप उपयोग कर रहे हैं) मौजूद है? – Spidey

+0

हां, यह चार्ट 1 होना चाहिए, कॉपी-पेस्ट गलती। पहले ही संपादित किया गया है। – Svartalfar

+0

xlsx को .zip एक्सटेंशन का नाम बदलें और इसे 7zip या किसी अन्य टूल से खोलें। क्या आप एक 'xl \ drawings' फ़ोल्डर देखते हैं? यदि ऐसा है, तो एक्सएमएल फाइलों को देखें और देखें कि पहले से मौजूद "चार्ट 1" है या नहीं। – Ernie

उत्तर

1

एक और नाम के लिए चार्ट 1 नाम बदलने कृपया क्योंकि शायद आप पहले से ही अपने एक्सेल अपने कोड में कहीं और फाइल में एक ही नाम के साथ एक चार्ट बनाया है

0

कोशिश इस (100% काम करेंगे):

using (ExcelPackage packageNew = new ExcelPackage()) 
{ 
ExcelWorksheet worksheetNew = packageNew.Workbook.Worksheets.Add("Sheet1"); 
worksheet.Cells["A1"].Value = "what ever"; 
. 
. 
. 
Byte[] bin = package.GetAsByteArray(); 
       string file = newFile.FullName; ; 
       File.WriteAllBytes(file, bin); 

       //These lines will open it in Excel 
       ProcessStartInfo pi = new ProcessStartInfo(file); 
       Process.Start(pi); 
} 
+0

उत्तर प्रश्न से संबंधित नहीं है। समस्या को चार्ट जोड़ने के साथ करना है जिसमें वही नाम है जो पहले से ही कार्यपुस्तिका में मौजूद है और स्प्रेडशीट को सहेजने के लिए कुछ भी नहीं है। – Pete

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