如何将生成的Excel工作表移动到特定的第1和第2位置

时间:2014-10-01 08:30:45

标签: c# excel vba excel-addins

我正在使用excel add in project。

我正在动态地从数据库表生成Excel工作表。

现在我想在第1和第2位移动特定的Excel工作表。

我尝试过如下操作,正确使用Office 2010版

但不适用于Office版本2013

2013年办公室应该怎么办?

如果活动表单来了,那么MYFirst"我使用以下代码将其移至第一位置

Worksheet hiddenSheet;
hiddenSheet = (Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);                            
hiddenSheet.Move(Type.Missing, Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Count - 3]);
// int count = Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Count;   // in office version 2010 count comes 4   so (4-3=1)

如果活动表单来了,那就是MYSecond"我使用以下代码将其移至第一位置

 Worksheet hiddenSheet;
 hiddenSheet = (Worksheet)Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);
 hiddenSheet.Move(Type.Missing, Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets[Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Count - 3]);
 // int count = Globals.ThisAddIn.Application.ActiveWorkbook.Worksheets.Count;   // in office version 2010  count comes 5    so (5-3=2)

我怎样才能做到这一点?或者如何找到当前安装的Office版本,以便直接执行计数差异并直接指定位置

MSDN提供此代码将工作表移动到最后位置 http://msdn.microsoft.com/en-us/library/xyhf0ksb.aspx

int totalSheets = this.Application.ActiveWorkbook.Sheets.Count;
((Excel.Worksheet)Application.ActiveSheet).Move(
    this.Application.Worksheets[totalSheets]);

如何将工作表移到第一个位置?

1 个答案:

答案 0 :(得分:0)

假设工作表已在excel工作簿中

将表格称为MyFirstSheet

将Excel工作簿称为book

将工作表MyFirstSheet移动到Excel工作簿中的第一个位置:

private static void moveSheetToFirstPosition(Excel.Workbook book){
    book.Sheets["MyFirstSheet"].Move(book.Sheets[1]);
}

这将把它放在第一位。

如果你有2张要移动的页面,FirstSheet,SecondSheet,只需将SecondSheet移动到Sheet [1],然后移动FirstSheet Sheets [1]。从而使第二张纸位于第2位。

希望这有帮助。