在 excel 工作簿 c# 中交换工作表

Swap worksheets within the excel workbook c#

例如看图

我想将工作表 "Sheet1" 换成 "Sheet3"。

我使用 EPPlus 的代码:

            ExcelPackage masterPackage = new ExcelPackage();
            foreach (var file in files)
            {
                ExcelPackage pckg = new ExcelPackage(new FileInfo(file));

                foreach (var sheet in pckg.Workbook.Worksheets)
                {
                    //check name of worksheet, in case that worksheet with same name already exist exception will be thrown by EPPlus

                    string workSheetName = sheet.Name;
                    foreach (var masterSheet in masterPackage.Workbook.Worksheets)
                    {
                        if (sheet.Name == masterSheet.Name)
                        {
                            workSheetName = string.Format("{0}_{1}", workSheetName, DateTime.Now.ToString("yyyyMMddhhssmmm"));
                        }
                    }

                    //add new sheet

                    if (sheet.Name.Contains("MB_STORE_POTENTIALvsWALLET"))
                    {
                        masterPackage.Workbook.Worksheets.Add(workSheetName, sheet);

                    }
                    else
                    {
                        masterPackage.Workbook.Worksheets.Add(workSheetName, sheet);
                        masterPackage.Workbook.Worksheets.MoveToStart(1);
                    }
                }
            }
            masterPackage.SaveAs(new FileInfo(resultFile));

如何做到这一点?有什么建议请..

如果只需要交换 sheets(我的意思是内容不需要处理)那么重命名 sheet 应该很简单。

  1. 将 "Sheet1" 重命名为 "adsf"
  2. 将 "Sheet3" 重命名为 "Sheet1"
  3. 将 "adsf" 重命名为 "Sheet3"

Sheets("Sheet1").Name = "adsf"

Sheets("Sheet3").Name = "Sheet1"

Sheets("adsf").Name = "Sheet3"

这工作正常:

ExcelPackage masterPackage = new ExcelPackage();
foreach (var file in files)
{
    ExcelPackage pckg = new ExcelPackage(new FileInfo(file));
    foreach (var sheet in pckg.Workbook.Worksheets)
    {
        //check name of worksheet, in case that worksheet with same name already exist exception will be thrown by EPPlus
        string workSheetName = sheet.Name;
        foreach (var masterSheet in masterPackage.Workbook.Worksheets)
        {
            if (sheet.Name == masterSheet.Name)
            {
                workSheetName = string.Format("{0}_{1}", workSheetName, DateTime.Now.ToString("yyyyMMddhhssmmm"));
            }
        }

        //add new sheet
        if (sheet.Name.Contains("MB_STORE_POTENTIALvsWALLET"))
        {
             masterPackage.Workbook.Worksheets.Add(workSheetName, sheet);
        }
        else
        {
             masterPackage.Workbook.Worksheets.Add(workSheetName, sheet);
             masterPackage.Workbook.Worksheets.MoveBefore(2, 1);
        }
    }
}
masterPackage.SaveAs(new FileInfo(resultFile));