Word互操作应用程序,将文本写入打开文档的末尾
本文关键字:文档 应用程序 互操作 文本 Word | 更新日期: 2023-09-27 17:53:07
我正在尝试编写一个c#应用程序,该应用程序将在MS Word中找到一个打开的文档,并使用Word互操作将一些文本写到文档的末尾。这可能吗?
我知道使用。net框架内建的Process和Sendkeys可以解决这个问题,但是我想使用Word互操作来解决这个问题,这样我就可以在将来添加更多的功能(Sendkeys也只能在某些特殊情况下解决这个问题)
谢谢!
更新:我得到了以下部分解决方案工作:
Application wordApp = new Application();
wordApp.Visible = true;
wordApp.Documents.Add();
Range rng = wordApp.ActiveDocument.Range(0, 0);
rng.Text = "New Text";
但是我想使用一个已经打开的word实例,而不是创建一个新的。谢谢!
更新2:我关闭!以下代码在UAC关闭
时工作 Application wordApp = (Word.Application)Marshal.GetActiveObject("Word.Application");
Range rng = wordApp.ActiveDocument.Range(0, 0);
rng.Text = "New Text";
但我不知道如何让它与UAC启用工作。UAC不会导致任何错误或异常,它只是不会将文本写入打开的文档。
感谢大家的帮助,到目前为止,结束是在眼前:)!
更新3:只是在UAC打开的情况下再试一次,它工作了…奇怪。如果你知道任何关于互操作和UAC的好资源,请在这里发布链接!
您是否考虑过使用Marshal.GetActiveObject("Word.Application")
来获取正在运行的应用程序,而不是创建一个新应用程序?
绝对是Evan。microsoftofficeinterop Assemblies让你可以用c#做任何事情!SendKeys()有问题
http://msdn.microsoft.com/en-us/library/15s06t57 (v = vs.80) . aspx
我想我应该详细说明SendKeys():它甚至不再可靠地工作,因为它是一个主要的黑客工具。MS Office互操作程序集允许您使用每个Office组件做大量的事情。我在MS Excel和Word中广泛地使用了它们,你可以做用户可以通过编程做的任何事情。
你可以在下面尝试。这里我给出了图像插入的例子。
WordC.Application wordApp = new WordC.Application();
// create Word document object
WordC.Document aDoc = null;
object readOnly = false;
object isVisible = false;
wordApp.Visible = false;
// wordApp.DisplayAlerts = false;
//docFileName is the filename with complete path. ex c://test.doc
aDoc = wordApp.Documents.Open(docFileName, Type.Missing, ref readOnly, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, ref isVisible, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
aDoc.Activate();
aDoc.InlineShapes.AddPicture(imgFilename, Type.Missing, Type.Missing, Type.Missing);
aDoc.Save();
aDoc.Close(Type.Missing, Type.Missing, Type.Missing);
wordApp.Quit(Type.Missing, Type.Missing, Type.Missing);