使用c#将文本粘贴到活动的Word窗口

时间:2013-11-25 19:17:03

标签: c# ms-word copy-paste

我正在开发一个通过COM端口接收数据的应用程序,需要将其粘贴到Microsoft Office程序中(目前,我正在使用Word,但它将支持Excel,PowerPoint,...)。 / p>

我认为一个好主意是将这些数据复制到剪贴板,然后将其粘贴到任何打开的应用程序窗口(例如,LibreOffice应用程序和记事本工作完美)。为此,我编码:

if (booleanIncomingData)
{
    booleanCopy = true;
}
else if (booleanOutcomingData)
{
    copy = false;
}
if (copy)
{
    Clipboard.SetText(myString);
}
else
{
    SendKeys.Send("^V");
    SendKeys.Send("{ENTER}");
}

正如我所说,LibreOffice程序和记事本工作完美,但Word和Excel没有做我认为他们应该做的事情(基本上显示任何数据,然后跳转到下一行)。

另外,一个简单的

Clipboard.GetText()ç

不起作用(我的感觉是因为它试图将内容粘贴到活动窗口中。

在网上寻找Interop.Word解决方案,到目前为止还没有成功。有谁知道我能做什么或我应该寻找什么?我应该实现Office附加组件而不是常规的Win32应用程序吗?

如果需要任何其他信息,请随时提出要求。

塞萨尔。

1 个答案:

答案 0 :(得分:1)

它比我想象的要复杂得多。但我现在的应用程序现在可以使用几种软件(Word,Excel,Notepad,LibreOffice,......)。

COPY / PASTE DATA

  • stackoverflow.com/questions/3546016/how-to-copy-data-to-clipboard-in-c-sharp
  • msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send(V = vs.110)的.aspx

获取活动窗口

  • www.csharphelp.com/2006/08/get-current-window-handle-and-caption-with-windows-api-in-c /
  • stackoverflow.com/questions/893669/determine-whether-program-is-the-active-window-in-net
  • stackoverflow.com/questions/2635404/how-to-get-process-name-and-title-of-the-top-window-on-windows-c-sharp

MICROSOFT OFFICE

  • hubpages.com/hub/How-To-Program-with-Excel-and-C-using-a-Ribbon
  • msdn.microsoft.com/en-us/library/vstudio/6b9478cs.aspx
  • stackoverflow.com/questions/13403504/send-text-to-excel-sheet-using-winapi
  • stackoverflow.com/questions/2378206/how-to-get-current-or-focussed-cell-value-in-excel-worksheet-using-c-sharp

总而言之,Microsoft Office应用程序更加繁琐,正如@Brian建议的那样,PIA(主要互操作程序集)在此任务中至关重要。