为什么我的 Excel 工作簿在 Excel 2010 中不可见?

mel*_*onk 2 vb.net excel excel-2010

我一直在使用 .xlsx 文件运行 excel 导出功能。有时在加载 excel 文件时,我会使用 System.Runtime.InteropServices.Marshal.BindToMoniker() 方法。当有问题的文件打开但存在时,我得到以下结果:

Excel 将启动,但不会加载工作簿,也不会加载任何工作表。Excel 显示为空白。

在执行导出的程序之外打开文件时,它以完全相同的方式加载。Excel 已打开,它在窗口顶部显示 Microsoft Excel,但没有可见的工作表。Excel 看起来根本没有打开任何东西。

进入选项还表明没有打开的工作簿。该文件肯定有内容,正如我在 Notepad++ 中打开它时所看到的那样,该文件有足够的细节让我看到工作簿中有工作表,但没有显示。

我不确定如何以编程方式防止这种损坏发生,或者如何修复它。任何建议或想法将不胜感激!

为了避免这个问题,我从来没有在关闭的 Excel 文件上使用 BindToMoniker(通过检查文件是否被锁定,如果它被解锁,我只使用 open 函数)

这是我遇到此问题时运行的代码。仅当文件存在且未打开时才会发生:

    Public Function OpenExcelFile( _
    ByRef pobjExcel As Excel.Application, _
    ByRef pwkbWorkBook As Excel.Workbook, _
    ByVal pstrFileName As String) As Boolean 
Run Code Online (Sandbox Code Playgroud)

...

pwkbWorkBook = BindToMoniker(pstrFileName)
            pobjExcel = pwkbWorkBook.Parent
            pobjExcel.Visible = True 'Temp; I use this to see the state of the file
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 5

会不会是工作簿被隐藏了?在视图选项卡上,如果启用了取消隐藏,您可以显示隐藏的工作簿。

此外,如果您认为工作簿应该可见,您可以通过更新 Windows 可见属性来显示它。

pobjExcel.Windows(workbookName).Visible = True
Run Code Online (Sandbox Code Playgroud)