epplus部分已经存在

我想通过使用epplus excel软件包更新(添加另一个工作表并添加图表)一个现有的xlsx文件。 但是,我在下面的行中遇到错误

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

错误:在EPPlus.dll中发生未处理的types为“System.InvalidOperationException”的exception其他信息:部分已经存在

谁能帮我? 先谢谢你。

 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重命名为另一个名称,因为可能您已经在您的代码中的其他地方在您的Excel文件中创build了一个具有相同名称的图表

试试这个(将工作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); }