如何在以编程方式将工作表添加到 Excel 时设置工作表的顺序?
How do I set the order of Worksheets as I add them to Excel Programmatically?
我有一本 Excel 工作簿,我正在使用循环添加工作 sheets。在下面的示例代码中,我使用的是固定数组,但实际代码使用数据库从中获取名称,可以有一个或多个(虽然少于 10 个)。
我(使用我的代码)遇到的问题是工作 sheet 以数组的相反顺序添加。因此 excel sheet 将打开,其中的选项卡顺序如下 1103 1102 1101 Sheet1。我知道我可以对数据库中的结果进行重新排序,但这感觉就像一个 hack,我确信有一种方法可以在代码中实现这一点。需要做什么才能在我的循环中正确设置选项卡的顺序?
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',在最后一个sheet之后添加新作品sheet。
xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
那你就不用用Move函数移动了
在行
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
总是先sheet更改名称。
您需要将“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 sheet 之后添加一个新作品 sheet,但是您可以使用以下代码添加一个 sheet:
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 工作簿,我正在使用循环添加工作 sheets。在下面的示例代码中,我使用的是固定数组,但实际代码使用数据库从中获取名称,可以有一个或多个(虽然少于 10 个)。
我(使用我的代码)遇到的问题是工作 sheet 以数组的相反顺序添加。因此 excel sheet 将打开,其中的选项卡顺序如下 1103 1102 1101 Sheet1。我知道我可以对数据库中的结果进行重新排序,但这感觉就像一个 hack,我确信有一种方法可以在代码中实现这一点。需要做什么才能在我的循环中正确设置选项卡的顺序?
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',在最后一个sheet之后添加新作品sheet。
xlWorkBook.Worksheets.Add(After: xlWorkBook.Sheets[xlWorkBook.Sheets.Count]);
那你就不用用Move函数移动了
在行
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Sheets[1];
总是先sheet更改名称。
您需要将“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 sheet 之后添加一个新作品 sheet,但是您可以使用以下代码添加一个 sheet:
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]);