2016-04-08 25 views
5

epplus excel paketini kullanarak mevcut bir xlsx dosyasını güncellemek (başka bir sayfa ekle ve grafik ekleme) yapmak istiyorum. system.data.dll 'EPPlus.dll Ek bilgileri oluştu tür bir işlenmeyen özel durum: Bölüm zatenepplus parçası zaten mevcut

Can var Ancak, ben

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

Hata hattında aşağıdaki bir hata var kimse bana yardım eder mi? Şimdiden teşekkür ederim. sizin excel kodunuzda başka bir yere dosya muhtemelen zaten aynı isimde bir grafik oluşturduk çünkü

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

Grafik X' mi yoksa "Grafik1" mi? Bu çalışma kitabının diğer sayfalarında zaten "Chart1" (veya kullandığınız her ne varsa, ne olursa olsun) var mı? – Spidey

+0

Evet, bu Chart1, copy-paste hatası olmalıdır. Zaten düzenlenmiş. – Svartalfar

+0

xlsx - .zip uzantısını yeniden adlandırın ve 7zip veya başka bir araçla açın. 'Xl \ drawings' klasörünü görüyor musunuz? Eğer öyleyse, xml dosyalarına bakın ve orada listelenmiş bir "chart1" olup olmadığını görün. – Ernie

cevap

1

başka isme grafiği 1 adlandırmak lütfen

0

bu (% 100 çalışır) deneyin:

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

Yanıt, soruyla ilgili değil. Sorun, çalışma kitabında zaten var olan bir ada sahip olan bir grafiğin eklenmesiyle ve elektronik tablo kaydetmeyle ilgili yapılacak bir şey eklemektir. – Pete