Excel c#工作簿自动更改
本文关键字:工作簿 Excel | 更新日期: 2023-09-27 18:02:49
我写了一个Excel插件(Office 2013),在那里我从odbc连接生成数据报告。
检查当前工作簿是否包含空工作表。如果没有,我添加一个新的工作簿,并把所有的数据。但在完成报告后,它会自动切换到第一个工作簿…我只使用ActiveWorkbook。激活…有人知道为什么会这样吗,我该怎么做才能改变吗?我的Report创建与Backgroundworker一起使用…在worker_hasFinished()上,我也尝试使用Application.Workbooks[Application.Workbook.Count].Activate();
激活最后一个工作簿任何想法?
更新:代码
在单页完成后,我调用这个方法:
Excel.Workbook workbook = Globals.ThisAddIn.Application.ActiveWorkbook;
Excel.Worksheet targetSheet = getSheet(SheetName);
Excel.Worksheet firstSheet = (Excel.Worksheet)workbook.Worksheets[1];
targetSheet.Activate();
targetSheet.Range["A1"].Select();
firstSheet.Activate();
firstSheet.Range["A1"].Select();
SheetName是当前工作表的名称…getSheet-Method是一个getSheetByName-Method
public static Excel.Worksheet getSheet(string SheetName)
{
Excel.Workbook workbook = Globals.ThisAddIn.Application.ActiveWorkbook;
Excel.Worksheet returnSheet;
foreach (Sheet sheet in workbook.Sheets)
{
if (sheet.Name.Equals(SheetName))
{
return sheet;
}
}
returnSheet = Globals.ThisAddIn.Application.Worksheets.Add(Type.Missing, Type.Missing, Type.Missing, Excel.XlSheetType.xlWorksheet);
returnSheet.Name = SheetName;
returnSheet.Move(After: workbook.Sheets[workbook.Sheets.Count]);
return returnSheet;
}
和至少worker_hasFinished():
Globals.ThisAddIn.Application.ScreenUpdating = true;
this.ReportProgressBar.Style = ProgressBarStyle.Continuous;
this.ReportProgressBar.Value = 100;
this.Close();
Globals.ThisAddIn.Application.Workbooks[Globals.ThisAddIn.Application.Workbooks.Count].Activate();
SystemSounds.Beep.Play();
最后一个代码片段中的this
是什么?扩展了system。windows。forms。form ?
this.Close();
做什么?
在我看来,你的
Globals.ThisAddIn.Application.Workbooks[Globals.ThisAddIn.Application.Workbooks.Count].Activate();
可能永远不会被调用,因为this
之前是关闭的。