如何设置工作表的顺序,我将它们以编程方式添加到Excel中?

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

我遇到的问题(用我的代码)是按照与数组相反的顺序添加的工作表。 所以Excel工作表将打开,并按照1103 1102 1101 Sheet1的顺序排列标签。 我知道我可以从数据库重新sorting结果,但感觉像一个黑客攻击,我相信有一种方法可以在代码中实现这一点。 需要做些什么才能正确设置我的循环内的标签顺序?

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); } 

您可以通过在添加function中放置参数“后”来添加新的工作表。

 xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]); 

那么你不需要使用移动function来移动它。
并在行中

 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]);