【问题标题】:Cryptic exception copy/pasting from DataGridView into Excel 2002神秘的异常从 DataGridView 复制/粘贴到 Excel 2002
【发布时间】:2011-02-23 15:49:51
【问题描述】:

早安,

运行 Visual Studio 2008 (C# 3.5)。 DataGridView 是手动加载的(不是数据绑定的)。复制/粘贴到记事本/写字板工作正常,但是当我尝试复制/粘贴到 Excel 中时,我得到了这个奇怪的异常:

Invalid FORMATETC structure (Exception from HRESULT: 0x80040064 (DV_E_FORMATETC))

截至上周五,这一直有效。我完全被难住了。我很确定这在过去是有效的。我尝试重新启动,重新添加 DataGridView 控件。非常感谢任何帮助。

问候, -艾伦。

【问题讨论】:

  • 您是使用默认复制程序还是创建了自定义程序?
  • 这似乎是一个报告的错误:connect.microsoft.com/VisualStudio/feedback/details/97153/…connect.microsoft.com/VisualStudio/feedback/details/97153/… 有一条评论可能会有所帮助:工具>>选项>>调试>>“处理跨越应用程序域边界或托管/非托管的异常边界未处理”
  • 默认复制/粘贴。我没有编写复制/粘贴代码,只是在数据网格中执行 Ctrl-C,然后在 Excel 中尝试 Ctrl-V。
  • 那些错误报告来自 2005 年!肯定不会是同一个问题吧?
  • 这里有同样的问题。我可以很好地粘贴到excel中。但是抛出了这个异常。作为一种“解决方法”,我刚刚禁用了这个异常。有后续吗?

标签: c# .net winforms excel


【解决方案1】:

也许您的某些数据正在被 Excel 解释为公式(如 5/0)。

你可以先试试 Pat 的建议(更简单!)。

另外,请先尝试将文本粘贴到记事本中,然后从记事本中复制所有内容,然后将其粘贴到 Excel 中。

如果仍然出现错误,请尝试将前半部分文本粘贴到记事本中。如果成功,请粘贴下半部分。他们的关键是尝试缩小导致 Excel 对您不利的文本字符串的范围。

【讨论】:

    【解决方案2】:

    我的建议是不要使用 ctrl+v 粘贴到 excel 中,右键单击并选择特殊粘贴并选择文本格式。将内容复制到剪贴板时听起来好像有一种不同的编码(ctrl+c) 如果您右键单击鼠标按钮而不是使用粘贴热键 (ctrl+p),则还有一些其他选项可用于粘贴。 希望这可以帮助你 -帕特

    【讨论】:

      【解决方案3】:

      不要调用Clipboard.SetDataObject(dataObject),试试这个:Clipboard.SetDataObject(dataObject, true);。 'true' 参数告诉剪贴板获取数据对象的副本。它对我有用。

      【讨论】: