代码之家  ›  专栏  ›  技术社区  ›  Ben

通过.NET生成Excel做一些奇怪的事情

  •  1
  • Ben  · 技术社区  · 14 年前

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

    Dim _xlApp As New Excel.Application
    Dim _xlWorkbook As Excel.WokBook = _xlApp.Workbooks.Open(_templateFileName)
    

    在填充之前将其设置为可见(用于调试目的)

    _xlApp.Visible = True
    

    然后我继续填充现有模板。

    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应用程序可见)。但是,如果我不设置断点,只让代码直接运行,就不会发生这种情况。
    没有多线程发生,或者其他任何我怀疑对代码有影响的事情发生。 我最明显的解决方法是不设置断点,我只是想知道是否有人以前见过这种情况,原因是什么? 谢谢

    1 回复  |  直到 14 年前
        1
  •  1
  •   Jon Skeet    14 年前

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

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