C# 通过.Net生成Excel做一些奇怪的事情

C# 通过.Net生成Excel做一些奇怪的事情,c#,.net,vb.net,excel,C#,.net,Vb.net,Excel,早上好, 我通过.Net创建的Excel工作表发生了一件非常奇怪的事情。 我加载现有工作簿 Dim _xlApp As New Excel.Application Dim _xlWorkbook As Excel.WokBook = _xlApp.Workbooks.Open(_templateFileName) 在填充之前将其设置为可见(用于调试目的) 然后我继续填充现有模板 Private Sub GenerateOceanFreightGrid() Dim column

早上好,
我通过.Net创建的Excel工作表发生了一件非常奇怪的事情。 我加载现有工作簿

Dim _xlApp As New Excel.Application
Dim _xlWorkbook As Excel.WokBook = _xlApp.Workbooks.Open(_templateFileName)
在填充之前将其设置为可见(用于调试目的)

然后我继续填充现有模板

Private Sub GenerateOceanFreightGrid()

        Dim columnCount As Integer = 4 ' _standardColumnCount
        Dim columnInsertPosition As Integer = 5

        If MyBooleanValue() Then
            _xlSheet.Columns(4).Insert()
            _xlSheet.Cells(7, 4) = "My Header Value"
            columnInsertPosition += 1
            columnCount += 1
        End If
当我在“Private Sub Gen…”行上设置断点并逐行遍历代码时,它会为声明的每个变量插入一个新列,因此在这种情况下,它会在到达“If MyBooleanValue()…”行之前插入两列(由于Excel应用程序可见,我可以看到实际发生的情况)。但是,如果我不设置断点,只让代码直接运行,则不会发生这种情况。
没有发生多线程或任何我怀疑会对代码产生任何影响的事情。 我显而易见的解决办法是不设置断点,我只是想知道是否有人以前见过这种情况,原因是什么?
谢谢

我怀疑这是由于调试器为了提供帮助而评估的某些属性造成的,但这是一个邪恶的属性,其副作用是添加列


我假设您没有任何可以显式执行此操作的监视变量?

我怀疑这是由于调试器正在评估某个属性以提供帮助,但这是一个邪恶的属性,具有添加列的副作用


我假设您没有任何可以显式执行此操作的监视变量?

欢迎使用Office development!是的,到目前为止这是一个笑话:)我们与Excel interop斗争了多年。不同的版本不同的服务包-这是地狱般的困难。我们放弃了,只买了第三方组件。欢迎使用Office development!是的,到目前为止这是一个笑话:)我们与Excel interop斗争了多年。不同的版本不同的服务包-这是地狱般的困难。我们放弃了,只是买了第三方组件。谢谢Jon,但不,我没有设置任何手表变量。不过这很奇怪,因为如果我在上面的例子中没有初始化变量,它只会插入一个rogue列,但是如果我这样做(如示例中所示),它会添加3列。我不太明白为什么它会为初始化的每个变量添加一列,为什么它只在单步执行代码时发生。非常奇怪。还可以在调试器设置中关闭隐式属性求值。调试器对ToString()求值感谢@Sergey和@Jon,我关闭了隐式属性求值,现在它做了“正确的事情”。干杯。@Ben这项功能太差劲了。不止一次地打败我。此外,断点在属性评估时不会命中(VS6调试器可以在监视窗口评估时打断)。@Sergey:如果Ben没有任何监视窗口,为什么会发生这种情况?我不明白这怎么可能。你(或其他人)能解释一下吗?谢谢你,乔恩,但不行,我没有设置任何手表变量。不过这很奇怪,因为如果我在上面的例子中没有初始化变量,它只会插入一个rogue列,但是如果我这样做(如示例中所示),它会添加3列。我不太明白为什么它会为初始化的每个变量添加一列,为什么它只在单步执行代码时发生。非常奇怪。还可以在调试器设置中关闭隐式属性求值。调试器对ToString()求值感谢@Sergey和@Jon,我关闭了隐式属性求值,现在它做了“正确的事情”。干杯。@Ben这项功能太差劲了。不止一次地打败我。此外,断点在属性评估时不会命中(VS6调试器可以在监视窗口评估时打断)。@Sergey:如果Ben没有任何监视窗口,为什么会发生这种情况?我不明白这怎么可能。你(或其他人)能解释一下吗?
Private Sub GenerateOceanFreightGrid()

        Dim columnCount As Integer = 4 ' _standardColumnCount
        Dim columnInsertPosition As Integer = 5

        If MyBooleanValue() Then
            _xlSheet.Columns(4).Insert()
            _xlSheet.Cells(7, 4) = "My Header Value"
            columnInsertPosition += 1
            columnCount += 1
        End If