我有一本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);
}
答案 0 :(得分:4)
您可以在最后一个工作表之后添加新工作表,然后输入'之后'在添加功能。
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);
}
答案 1 :(得分:0)
您可以在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]);