我如何设置工作表的顺序,因为我将它们添加到Excel编程
本文关键字:因为 添加 编程 Excel 何设置 设置 工作 顺序 | 更新日期: 2023-09-27 18:16:29
我有一个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]);
则不需要使用move函数移动它。
在
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]);