Part of epplus already exists

I want to update (add another sheet and add diagram) an existing xlsx file using expp epplus package. However, I got an error in the next line

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

Error: An unhandled exception of type "System.InvalidOperationException" occurred in EPPlus.dll. Additional information: part already exists

Can anyone help me? Thank you in advance.

 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(); } 
+5
source share
2 answers

rename diagram 1 to a different name because you may already have created a diagram with the same name in your excel file somewhere else in your code

+1
source

try this (will work 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
source

Source: https://habr.com/ru/post/1246679/


All Articles