我已经构建了一个excel插件,用数据库中的数据填充工作表.我还添加了一些样式并使用FreezePanes锁定一些行和列.
worksheet.Activate(); worksheet.Application.ActiveWindow.FreezePanes = false; worksheet.Application.ActiveWindow.SplitRow = 4; worksheet.Application.ActiveWindow.SplitColumn = 11; worksheet.Application.ActiveWindow.FreezePanes = true;
这一切都像excel 2010/2013中的魅力一样,但我最近切换到excel 2016(办公室365),从那时起,当我的excel工作表不在前台时,我遇到了FreezePanes的问题.我搜索了互联网,我遇到的唯一事情就是我只能在活动表上预制FreezePanes,我知道 - 我已经在设置FreezePanes之前激活了表单.这在excel 2010中有效,尽管物理上我的excel没有被发送到前台.
来自办公室365的Excel可能真的希望我的excel工作表在物理上处于前台但worksheet.Activate()
没有帮助,我也尝试了以下代码:
[DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("user32.dll", SetLastError = true)] static extern System.IntPtr FindWindow(string lpClassName, string lpWindowName); string caption = oExcel.Caption; IntPtr handler = FindWindow(null, caption); SetForegroundWindow(handler);
但这也行不通.任何人都可以帮我这个吗?
需要说明的是:我的excel版本是2016版本1611(Build 7571.2109)