C# 在以编程方式将工作表添加到Excel时,如何设置工作表的顺序?

C# 在以编程方式将工作表添加到Excel时,如何设置工作表的顺序?,c#,excel,office-interop,C#,Excel,Office Interop,我有一本Excel工作手册,我正在使用循环添加工作表。在下面的示例代码中,我使用的是一个固定数组,但真正的代码使用一个数据库从中获取名称,可以有一个或多个(虽然少于10个) 我(在代码中)遇到的问题是以数组的相反顺序添加工作表。因此,excel工作表将打开,选项卡顺序如下1103 1102 1101 Sheet1。我知道我可以从数据库中重新排序结果,但这感觉像是一种黑客行为,我相信有一种方法可以在代码中实现这一点。要在我的循环中正确设置选项卡的顺序,需要做什么 private stati

我有一本Excel工作手册,我正在使用循环添加工作表。在下面的示例代码中,我使用的是一个固定数组,但真正的代码使用一个数据库从中获取名称,可以有一个或多个(虽然少于10个)

我(在代码中)遇到的问题是以数组的相反顺序添加工作表。因此,excel工作表将打开,选项卡顺序如下1103 1102 1101 Sheet1。我知道我可以从数据库中重新排序结果,但这感觉像是一种黑客行为,我相信有一种方法可以在代码中实现这一点。要在我的循环中正确设置选项卡的顺序,需要做什么

    private static void SetWorksheet()
    {
        Excel.Application xlApp;
        Excel.Workbook xlWorkBook;
        Excel.Worksheet xlWorkSheet;
        object misValue = System.Reflection.Missing.Value;

        xlApp = new Excel.Application();
        xlApp.Visible = true;
        xlWorkBook = xlApp.Workbooks.Add(1);


        string[] storeArray = { "1101", "1102", "1103" };

        foreach (string s in storeArray)
        {
            xlWorkBook.Worksheets.Add();
            xlWorkBook.Worksheets.Move(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]); 
            xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
            xlWorkSheet.Name = s;                
            releaseObject(xlWorkSheet);
        }
       releaseObject(xlWorkBook);
       releaseObject(xlApp);        
    }

您可以通过在添加函数中输入参数“after”在最后一张工作表之后添加新工作表。

xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
那么您就不需要使用移动功能来移动它了。
排队

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
它总是在第一张纸上更改名称。
您需要将“1”更改为xlWorkBook.Sheets.Count

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[xlWorkBook.Sheets.Count];
最后,您的代码应该如下所示

private static void SetWorksheet()
{
    Excel.Application xlApp;
    Excel.Workbook xlWorkBook;
    Excel.Worksheet xlWorkSheet;
    object misValue = System.Reflection.Missing.Value;

    xlApp = new Excel.Application();
    xlApp.Visible = true;
    xlWorkBook = xlApp.Workbooks.Add(1);


    string[] storeArray = { "1101", "1102", "1103" };

    foreach (string s in storeArray)
    {
        xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
        //xlWorkBook.ActiveSheet(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[xlWorkBook.Sheets.Count];
        xlWorkSheet.Name = s;
        releaseObject(xlWorkSheet);
    }
    releaseObject(xlWorkBook);
    releaseObject(xlApp);  
}

您可以通过在添加函数中输入参数“after”在最后一张工作表之后添加新工作表。

xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
那么您就不需要使用移动功能来移动它了。
排队

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
它总是在第一张纸上更改名称。
您需要将“1”更改为xlWorkBook.Sheets.Count

xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[xlWorkBook.Sheets.Count];
最后,您的代码应该如下所示

private static void SetWorksheet()
{
    Excel.Application xlApp;
    Excel.Workbook xlWorkBook;
    Excel.Worksheet xlWorkSheet;
    object misValue = System.Reflection.Missing.Value;

    xlApp = new Excel.Application();
    xlApp.Visible = true;
    xlWorkBook = xlApp.Workbooks.Add(1);


    string[] storeArray = { "1101", "1102", "1103" };

    foreach (string s in storeArray)
    {
        xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
        //xlWorkBook.ActiveSheet(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
        xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[xlWorkBook.Sheets.Count];
        xlWorkSheet.Name = s;
        releaseObject(xlWorkSheet);
    }
    releaseObject(xlWorkBook);
    releaseObject(xlApp);  
}

在excel中,默认情况下,可以在3张工作表之后添加新工作表,但可以使用以下代码添加多张工作表:

Microsoft.Office.Interop.Excel.Worksheet sheet1 = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Sheets.get_Item(1);
Microsoft.Office.Interop.Excel.Worksheet sheet4 = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Sheets.Add(After: wb.Sheets[3]);

在excel中,默认情况下,可以在3张工作表之后添加新工作表,但可以使用以下代码添加多张工作表:

Microsoft.Office.Interop.Excel.Worksheet sheet1 = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Sheets.get_Item(1);
Microsoft.Office.Interop.Excel.Worksheet sheet4 = (Microsoft.Office.Interop.Excel.Worksheet)excelApp.Sheets.Add(After: wb.Sheets[3]);