【问题标题】:Excel Interop - Cancel selectionExcel 互操作 - 取消选择
【发布时间】:2012-09-12 01:45:28
【问题描述】:

我在 Excel 工作表中复制和插入行,如下所示:

   while (rowsToAdd > 0)
   {
      // copy the existing row
      insertionCell.EntireRow.Copy(Type.Missing);

      // location of the new row
      Range newRow = insertionCell.EntireRow.get_Offset(1, 0).EntireRow;

      // insert the new row
      newRow.Insert(XlInsertShiftDirection.xlShiftDown, Type.Missing);

      rowsToAdd--;
   }

我遇到的问题是,有时我会在最初复制的行周围留下一个选择框。

有什么方法可以取消选择框(您通常使用 Escape 键的方式?)

【问题讨论】:

    标签: c# excel interop excel-interop


    【解决方案1】:

    在 VBA 中是Application.CutCopyMode = False

    【讨论】:

    • 它看起来像是一个枚举,而不是一个布尔值。见这里:msdn.microsoft.com/en-us/library/office/…
    • 你是对的,它是一个枚举。这是一个奇怪的枚举,但至少在 VBA 中,您也可以将其设置为 FALSE。我已经做过很多次了。有趣的是,您认为文档是错误的。
    • 也许“令人困惑”是一个更好的词。如果我尝试将其设置为 false,则会出现编译器错误。对于不了解的人来说,这看起来像是文档中的错误。
    【解决方案2】:

    添加

    myExcelApplication.CutCopyMode = XlCutCopyMode.xlCopy;
    

    似乎可以解决问题,尽管documentation 没有很好地解释它,而且似乎是错误的,因为提到了布尔值。

    【讨论】:

      【解决方案3】:

      我知道它已经很老了,但是由于我在将一行复制到另一行时遇到了一些问题,并且我的案例得到了正确的解决方案,我现在很高兴分享它,以防万一它可以解决您的问题(考虑复制行而不是插入行)。

      解决方法如下:

      Microsoft.Office.Interop.Excel.Range xlSourceRow;
      Microsoft.Office.Interop.Excel.Range xlNewRow;
      xlSourceRow.Copy(xlNewRow);
      

      使用此解决方案可防止在您的 MS-Excel 文件中进行任何选择。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多