当splitrow为> 0时,Excel Interop冻结窗格失败

时间:2017-05-26 14:01:35

标签: c# excel vb.net

我正在尝试冻结在vb.net项目中创建的excel工作表中的窗格。我创建了以下测试代码:

Dim xlApp = New Microsoft.Office.Interop.Excel.Application
Dim xlBook = xlApp.Workbooks.Add
Dim xlSheet = xlBook.Worksheets(1)
Dim xlWindow = xlApp.Windows(1)

With xlApp.ActiveWindow
  .SplitColumn = 1
  .SplitRow = 0
End With

xlApp.ActiveWindow.FreezePanes = True

问题是这样可以正常写入,但是如果我将.SplitRow改为大于0的任何值,我会在freezepanes行上出错 -

  

mscorlib.dll中出现未处理的“System.Runtime.InteropServices.COMException”类型异常

     

其他信息:无法设置Window类的FreezePanes属性

我也尝试用单行完全替换with块:

xlSheet.Cells(6, 2).Select()

这不会引发错误,但它也只会冻结第6列。

我想补充一点,这是一个较旧的程序,我每年使用一次,去年它工作正常,但我已经升级到Office 365(64位版本)。我仍在使用办公室15的互操作程序集,但未能找到更新版本。

1 个答案:

答案 0 :(得分:0)

由于没有人能够回答这个问题,我找到了一个解决方法,我想我会为遇到此问题的其他人发布答案。我不接受这个答案,因为应该有一个使用微软自己的DLL的解决方案。

我找到了一个名为spire office的免费dll,通过e-iceblue可以在不安装办公室的情况下操作excel文件(这使得它与版本无关)。免费版本有一些限制,但它们似乎不适用于仅xls文件的转换任务。这可以拆分窗格。