从外部应用程序编写 Word 文档脚本
本文关键字:文档 脚本 Word 应用程序 从外部 | 更新日期: 2023-09-27 17:56:26
我正在尝试自动化一个繁琐的过程,该过程目前涉及启动Word,从.dot创建新文档,保存它,运行一个或两个使用VSTO用C#编写的插件,再次保存它,退出文档,然后退出Word。
我想编写一个 C# 命令行应用程序,用户可以使用一个或两个参数启动(传达通常需要与 Word 中的对话框交互的所有信息),然后在运行时离开而无需进一步交互......在 Word 运行时抑制任何和所有焦点窃取(如果必要且可能)。
有没有一些简单的方法来实现这一点?下面是一个类似 Java 的伪代码示例,说明了我的想法:
// magic to non-interactively launch Word and expose it as an object
WordHost word = xx;
// create new Word document based on a specific template that isn't the default one.
WordDocument doc = MSWord.create("z:'path'to'arbitraryTemplate.dot");
// If we can avoid physically saving it at this point and just assign a concrete
// file path, it would be even better because the network is glacially slow.
doc.saveAs("z:'path'to'newDoc.docx");
// someZeroArgPlugin and aTwoArgPlugin are VSTO plugins written with C#
doc.someZeroArgPlugin();
doc.aTwoArgPlugin("first", "second");
// done!
doc.save();
doc=null;
word=null; // something like word.unload() first?
// now do more things that don't involve Word directly...
假设我走在正确的轨道上...
我很确定我可以通过搜索找到我需要知道的大部分内容......一旦我弄清楚我需要搜索什么。我应该搜索什么?
我想在 Visual Studio 中创建哪种类型的项目?.net 4.5 C# 控制台应用程序?Word 2010 加载项?其他类型的项目?
可能会或可能不会产生影响的详细信息:
我的程序只能在安装了 Word 2010 的计算机上运行。不需要与旧版本兼容。
如果它可以在 Vista 下运行,那就太好了,但它只需要在 Win7 下工作。
我有Visual Studio Ultimate 2012
以下是您需要执行的操作:
- 安装Visual Studio和Office。
- 使用所选的 .NET 框架创建 C# 控制台项目(建议使用 4.0 或更高版本)。 添加对 Word COM 库的引用
- ("项目"菜单 =>"添加引用"、"COM "选项卡Microsoft Word XX.0 对象库 -- Word 2010 为 14.0)。
- 将上面添加的引用的"嵌入互操作类型"设置设置为 false
- 在解决方案资源管理器中展开引用
- 选择 Microsoft.Office.Core、Microsoft.Office.Interop.Word 和 VBIDE
- 右键单击并选择"属性"以显示引用的"属性"面板。
- 在"属性"面板中,将"嵌入互操作类型"设置为 False
- 代码离开。
下面是一些示例代码。
using System;
using Microsoft.Office.Interop.Word;
namespace CSharpConsole
{
static class Program
{
[STAThread]
static void Main()
{
var application = new ApplicationClass();
var document = application.Documents.Add();
document.SaveAs("D:'test.docx");
application.Quit();
}
}
}
有关详细信息,请参阅 http://msdn.microsoft.com/en-us/library/office/ff601860(v=office.14).aspx