Search code examples
epplus

EPPlus Worksheets copied into a new workbook remain selected when opened in Excel


Here's the problem:

I copy worksheets from another workbook into a new ExcelPackage and save that new package. When I open that package in Excel, the sheets that were copied appear selected.

See OutFile.xlsx here: https://1drv.ms/u/s!Aoz3mqCqpAZbjldtXKcClJkstXQK?e=yL4vQR

How do I deselect all worksheets in EPPlus before saving the workbook?

I am using EPPlus v4.5.3.3

Here's code to illustrate the problem:

ExcelPackage xlPackage = new ExcelPackage();
ExcelWorkbook xlWorkbook = xlPackage.Workbook;
xlWorkbook.Worksheets.Add("AddedSheet1");
xlWorkbook.Worksheets.Add("AddedSheet2");
xlWorkbook.Worksheets.Add("AddedSheet3");

ExcelPackage sourcePackage = new ExcelPackage(new FileInfo(@"c:\temp\AnyBlankExcelFile.xlsx"));
ExcelWorksheet sheet1 = sourcePackage.Workbook.Worksheets["Sheet1"];
xlWorkbook.Worksheets.Add("Copied1", sheet1);
xlWorkbook.Worksheets.Add("Copied2", sheet1);
xlWorkbook.Worksheets.Add("Copied3", sheet1);

xlWorkbook.Worksheets.Add("AddedSheet4");
xlPackage.SaveAs(new FileInfo(@"C:\temp\OutFile.xlsx"));  

xlPackage.Dispose();
sourcePackage.Dispose();

Solution

  • Seems epplus selects the copied tab by default. Just need to get the worksheet which you can do with the Add call and tell it to unselect:

    var c1 = xlWorkbook.Worksheets.Add("Copied1", sheet1);
    c1.View.SetTabSelected(false);
    
    var c2 = xlWorkbook.Worksheets.Add("Copied2", sheet1);
    c2.View.SetTabSelected(false);
    
    var c3 = xlWorkbook.Worksheets.Add("Copied3", sheet1);
    c3.View.SetTabSelected(false);