加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – “无法设置Window类的FreezePanes属性”Excel 2016(office

发布时间:2020-12-15 08:16:13 所属栏目:百科 来源:网络整理
导读:我已经构建了一个excel插件,用数据库中的数据填充工作表.我还添加了一些样式并使用FreezePanes锁定了一些行和列. worksheet.Activate();worksheet.Application.ActiveWindow.FreezePanes = false;worksheet.Application.ActiveWindow.SplitRow = 4;worksheet
我已经构建了一个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以来的一些更改,请参阅此链接:
https://msdn.microsoft.com/en-us/library/office/dn251093.aspx

您可以尝试的另一件事是在调用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提交错误报告,并等待他们是否可以将此确认为错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读