如何复制具有不同名称的工作表 - C#和Excel Interop

Joe*_*uer 5 c# excel interop excel-interop

我想简单地在工作簿中复制一张表并给它一个不同的名称.

var pointName1 = workbook.Worksheets["PointName1"] as Worksheet;
pointName1.Copy(); // How do I access this newly created sheet?
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望能够编写这样的方法

pointName1.CopyTo("New Sheet");

其中"新工作表"是"PointName1"的重命名副本.

有时,PointName1将是工作簿中唯一的工作表,有时则会有其他工作表.

小智 8

您可以通过多种方式实现此目的 - 最简单的方法是在最后一个工作表之后复制,然后使用索引重命名它:

Excel.Application xlApp = Marshal.GetActiveObject("Excel.Application") as Excel.Application;
Excel.Workbook xlWb = xlApp.ActiveWorkbook as Excel.Workbook;
Excel.Worksheet xlSht = xlWb.Sheets[1];
xlSht.Copy(Type.Missing, xlWb.Sheets[xlWb.Sheets.Count]); // copy
xlWb.Sheets[xlWb.Sheets.Count].Name = "NEW SHEET";        // rename
Run Code Online (Sandbox Code Playgroud)

我相信这个MSDN指南也回答了你的问题.

如果要获取工作表的索引,请查找Worksheet.Index属性.