在ASP.NET MVC3中使用C#填充单词模板

时间:2012-02-24 12:46:39

标签: c# asp.net-mvc-3 ms-word

我在阅读一些帖子时提到了Populate word文档,但我需要使用C#填充word文档(Office 2007)。例如,我想要一个带有标签[NAME]的word文档,在C#中使用该标签来放置我的值,并在ASP.NET MVC3控制器中完成所有这些操作。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用Microsoft提供的OpenXML SDK来操作Word文档。这里有一个nice article(实际上是3篇文章中的第三篇),有几个例子。

答案 1 :(得分:0)

你可以这样做: - 介绍" signets"进入Word文档模板 - 处理您的单词模板的副本 - 修改c#代码中的signets值并保存或打印文件。

如果您在应用程序中处理多个文档,请小心释放您的文字处理:)

答案 2 :(得分:0)

从问题中提取OP的解决方案:

  

我发现的解决方案是:

static void Main(string[] args)
{
    Console.WriteLine("Starting up Word template updater ...");

    //get path to template and instance output
    string docTemplatePath = @"C:\Users\user\Desktop\Doc Offices XML\earth.docx";
    string docOutputPath = @"C:\Users\user\Desktop\Doc Offices XML\earth_Instance.docx";

    //create copy of template so that we don't overwrite it
    File.Copy(docTemplatePath, docOutputPath);

    Console.WriteLine("Created copy of template ...");

    //stand up object that reads the Word doc package
    using (WordprocessingDocument doc = WordprocessingDocument.Open(docOutputPath, true))
    {
        //create XML string matching custom XML part
        string newXml = "<root>" +
            "<Earth>Outer Space</Earth>" +
            "</root>";

        MainDocumentPart main = doc.MainDocumentPart;
        main.DeleteParts<CustomXmlPart>(main.CustomXmlParts);

        //MainDocumentPart mainPart = doc.AddMainDocumentPart();

        //add and write new XML part
        CustomXmlPart customXml = main.AddCustomXmlPart(CustomXmlPartType.CustomXml);
        using (StreamWriter ts = new StreamWriter(customXml.GetStream()))
        {

            ts.Write(newXml);
        }

        //closing WordprocessingDocument automatically saves the document
    }

    Console.WriteLine("Done");
    Console.ReadLine();
}