2016-04-08 16 views
5

Tôi muốn cập nhật (thêm trang tính khác và thêm biểu đồ) tệp xlsx hiện có bằng cách sử dụng gói excel epplus. Tuy nhiên, tôi có một lỗi trong sau dòngphần epplus đã tồn tại

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

Lỗi: Một ngoại lệ unhandled của loại 'System.InvalidOperationException' xảy ra ở EPPlus.dll bổ sung thông tin: Phần đã tồn tại

Can có ai giúp tôi không? Cảm ơn bạn trước.

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

Có phải 'Biểu đồ X' hoặc' Biểu đồ1' không? Đã có 'Chart1' (hoặc Chart X bất cứ điều gì bạn đang sử dụng) có mặt trên các trang khác của bảng tính này? – Spidey

+0

Có, đó phải là Chart1, copy-paste mistake.Already edited. – Svartalfar

+0

Đổi tên phần mở rộng xlsx thành .zip và mở nó bằng 7zip hoặc một số công cụ khác. Bạn có thấy thư mục 'xl \ drawings' không? Nếu vậy, hãy xem các tệp xml và xem liệu có "biểu đồ 1" được liệt kê trong đó chưa. – Ernie

Trả lời

1

xin đổi tên biểu đồ 1 tới tên khác vì có lẽ bạn đã đã tạo ra một biểu đồ có cùng tên trong excel của bạn tập tin ở một nơi khác trong mã của bạn

0

thử này (sẽ làm việc 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

Trả lời không liên quan đến câu hỏi. Vấn đề là phải làm với việc thêm biểu đồ có cùng tên với biểu đồ đã tồn tại trong sổ làm việc và không có gì để làm với việc lưu bảng tính. – Pete

Các vấn đề liên quan