![](/img/trans.png)
[英]How do I programmatically create kmltreeview folders and add placemarks in them?
[英]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.