c# – “无法设置Window类的FreezePanes属性”Excel 2016(office
我已经构建了一个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没有被发送到前台. Office 365中的Excel可能真的希望我的excel工作表在物理上位于前台,但workheet.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) 解决方法
Worksheet.Application.ActiveWindow可能不是包含活动工作表的窗口吗?
在以前的Excel版本中,所有工作簿都具有相同的窗口,但由于Microsoft删除了Excel的MDI,您可能会突然有两个不同的窗口使用与以前相同的代码.混合这些窗口可能会导致遇到问题. 有关Excel 2013以来的一些更改,请参阅此链接: 您可以尝试的另一件事是在调用FreezePane之前将窗口状态设置为正常: Worksheet.Application.ActiveWindow.WindowState = Microsoft.Office.Interop.Excel.XlWindowState.xlNormal; 而另一种可能性是,这实际上是Excel中的一个错误.我确实找到了其他有同样问题的人,但不清楚这个人是否解决了这个问题或填写了错误报告: https://social.msdn.microsoft.com/Forums/office/en-US/7e6ff1ed-b4c6-4c75-82be-14175f44df55/freezepanes-throws-an-exception-when-excel-is-minimized?forum=exceldev 您可以向Microsoft提交错误报告,并等待他们是否可以将此确认为错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |