c# - 如何在 C# 程序中调试由 Excel 互操作引起的 COM 异常?
问题描述
我正在开发一个 C# 应用程序,尝试使用 Excel 功能。为了做到这一点,我正在使用 Interop 作为一个库。我在以下源代码行中有一个例外:
Range rng_Destination =
xlApp.get_Range(xlWrkSht.Cells[2,1],
xlWrkSht.Cells[xlWrkSht.Cells[1,1].CurrentArray.Rows.Count+1,
dt_main.Columns.Count]);
为了调查这一点,我尝试添加xlWrkSht.Cells[2,1]
到 Visual Studio 的 Watch 窗口,但这只是显示{System.__ComObject}
,这不是很有用。
所以,我尝试了另一种方法,使用这种源代码:
System.Diagnostics.Debug.WriteLine("xlWrkSht.Cells[2 ,1]: [%s]",
xlWrkSht.Cells[2, 1]);
但是,这会导致以下情况Exception
:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException
HResult=0x80131500
Message=Cannot dynamically invoke method 'WriteLine' because it has
a Conditional attribute
Source=<Cannot evaluate the exception source>
StackTrace:<Cannot evaluate the exception stack trace>
所以我的问题很简单:我怎样才能调试 Interop 相关的对象,就像提到的那样xlWrkSht.Cells[2, 1]
?
供您参考:我已经尝试取消选中“只是我的代码”,但这直到现在都没有帮助(我在互联网上的某个地方找到了这个,我不知道它的作用):
我一直在寻找有关Interop
调试的其他资源,但这些信息过于笼统,对我的具体情况没有用处。
我还在互联网上看到了一些关于事件查看器的帖子,但在那里,我只有一些“信息”和最多一些“警告”消息,没有“错误”消息(我一直在寻找“Windows 日志、应用程序/安全和系统”。
经过更多调查后编辑
同时我已经看到我可以找到该单元格的值,使用:
xlWrkSht.Cells[2, 1]
=> Dynamic View
FormulaLocal
最后一个属性包含该值。
但是,以下问题是我需要获取此单元格所属的 Excel 数组:
xlWrkSht.Cells[2, 1].CurrentArray.
这个似乎无法访问,即使不使用“动态视图”。有任何想法吗?
解决方案
推荐阅读
- python - 试图检查我的 Python 包,但一直告诉我没有安装 aiohttp
- angular - 使用函数来确定使用 ngTemplateOutlet 渲染哪个模板
- javascript - 如何使用指令动态更改属性?
- javascript - React Hooks - useDidUpdateEffect 与深度比较
- c# - C# CheckBox 方法逻辑不会操作
- ffmpeg - 如何仅将错误消息保存在日志文件中?
- c - 如何从最大到最小对整数列表进行排序?
- r - 将 shapefile 添加到现有 spplot()
- twitter-bootstrap - 如何在悬停时突出显示网格行并在 Bootstrap 中单击时将其选中?
- python - 追溯
从 extractdocx 导入 * from docx import opendocx, getdocumenttext from exceptions import PendingDeprecationWarning