C#/VS2010在运行时从模板生成Word 2007中的新文档

C#/VS2010在运行时从模板生成Word 2007中的新文档,c#,visual-studio-2010,office-2007,word-2007,C#,Visual Studio 2010,Office 2007,Word 2007,我正在尝试将以前创建的Word 2007功能区集(8个选项卡、大约150个按钮和10个复选框)从VS2005中的VB转换为VS2010中的C。 我遇到的问题是,我无法设置按钮控件,以使用启用宏的模板打开新文档。我已经确认了每个模板的文件路径,并且使用了VB-C转换器,但由于某些原因,它不能正常工作。 以下是迄今为止我加载模板的方法: 有几个主要选项: 使用Office Automation COM库-效果很好,但有几个条件: 您需要为运行代码的计算机(如果尚未安装Office)颁发Offic

我正在尝试将以前创建的Word 2007功能区集(8个选项卡、大约150个按钮和10个复选框)从VS2005中的VB转换为VS2010中的C。 我遇到的问题是,我无法设置按钮控件,以使用启用宏的模板打开新文档。我已经确认了每个模板的文件路径,并且使用了VB-C转换器,但由于某些原因,它不能正常工作。 以下是迄今为止我加载模板的方法:


有几个主要选项:

  • 使用Office Automation COM库-效果很好,但有几个条件:
    • 您需要为运行代码的计算机(如果尚未安装Office)颁发Office(或至少Word)许可证
    • 您不能在服务器端、无桌面的环境中使用它(例如,在ASP.NET应用程序中)。这是不受支持的方案
  • 使用第三方库,如Aspose。
    • 问题是它太贵了
  • 使用SaaS服务,如Saaspose
    • 它的价格合理:每月15美元,但它没有像Aspose这样的本地图书馆灵活,需要可靠的互联网连接
  • 直接使用OOXML库,但您说不想直接涉猎XML
Office 2007和Office 2010 Word文档文件本质上是相同的,它们之间的编程模型和API更改也是一样的——我认为唯一重要的区别是Office 2010的UI看起来比2007更好

   private void _LoadTemplate(string templateName)
    {
        string templatePath1 = "//Macro - Development";
        string templatePath2 = "//Macro - Development/Templates No Longer Updated";
        if(File.Exists(templatePath1 + templateName))
        {
            Document doc = Application.Documents.Add(Template = templatePath1 + templateName);
        }
        else if (File.Exists(templatePath2 + templateName))
        {
            Document doc = Application.Documents.Add(Template = templatePath2 + templateName);
        }
        else
        {
            MsgBox = "Template does not exist.";
        }