簡體   English   中英

以編程方式將工作表添加到Excel時,如何設置工作表的順序?

[英]How do I set the order of Worksheets as I add them to Excel Programmatically?

我有一本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);        
    }

您可以通過在Add函數中放置參數'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]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM