2016-04-08 24 views
5

Ich möchte eine existierende xlsx-Datei mit dem epplus excel-Paket aktualisieren (ein weiteres Blatt hinzufügen und ein Diagramm hinzufügen). Allerdings habe ich einen Fehler in Zeile nachepplus Teil existiert bereits

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

Fehler: Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' aufgetreten in EPPlus.dll Zusätzliche Informationen: Teil existieren bereits

Can jemand mir helfen? Vielen Dank im Voraus.

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

Ist es 'Diagramm X' oder' Diagramm1'? Gibt es bereits "Chart1" (oder Chart X, was immer Sie verwenden) auf anderen Blättern dieses Arbeitsbuchs? – Spidey

+0

Ja, das sollte Chart1 sein, Copy-Paste-Fehler. Bereits bearbeitet. – Svartalfar

+0

Benennen Sie die Erweiterung xlsx in .zip um und öffnen Sie sie mit 7zip oder einem anderen Tool. Siehst du einen Ordner 'xl \ drawings'? Wenn ja, sehen Sie sich die XML-Dateien an und prüfen Sie, ob dort bereits ein "Diagramm1" aufgeführt ist. – Ernie

Antwort

1

bitte Diagramm 1 auf einem anderen Namen umbenannt werden, da wahrscheinlich bereits Sie ein Diagramm mit dem gleichen Namen erstellt haben, in Ihren Excel woanders in Ihrem Code-Datei

0

versuchen, dieses (zu 100% arbeiten):

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

Die Antwort bezieht sich nicht auf die Frage. Das Problem besteht darin, ein Diagramm hinzuzufügen, das denselben Namen wie ein bereits in der Arbeitsmappe vorhandenes Diagramm hat und nichts mit dem Speichern einer Tabelle zu tun hat. – Pete

Verwandte Themen