C# 使用现有word.doc和.net core查找并替换

C# 使用现有word.doc和.net core查找并替换,c#,ms-word,filestream,C#,Ms Word,Filestream,我正在尝试查找并替换我创建并添加到.net核心项目中的word文档模板中的特定单词/字符串 我目前正在使用NPOI来实现这一点,但我似乎无法理解,因为我的C#知识不是很好 理论上,我希望阅读现成的.docx模板,然后替换需要的内容,然后保存它 我已经尝试了我能想到的一切,但仍然不起作用 下面是留给我的代码: var docUrl = @"App_Data/Document_Template.docx"; using (FileStream file = new FileStream(docUr

我正在尝试查找并替换我创建并添加到.net核心项目中的word文档模板中的特定单词/字符串

我目前正在使用NPOI来实现这一点,但我似乎无法理解,因为我的C#知识不是很好

理论上,我希望阅读现成的.docx模板,然后替换需要的内容,然后保存它

我已经尝试了我能想到的一切,但仍然不起作用

下面是留给我的代码:

var docUrl = @"App_Data/Document_Template.docx";

using (FileStream file = new FileStream(docUrl, FileMode.Open, FileAccess.Read))
        {
            XWPFDocument doc = new XWPFDocument(file);

            // get the document template using docUrl and replace string with another string.

            doc.Write(file);

        }
任何帮助都将是了不起的,因为我花了这么多时间研究和尝试实现这一点,只是没有任何运气

要替换MS word中的特定单词,首先应添加nuget中的以下引用:

Install-Package Microsoft.Office.Interop.Word
此示例代码用另一个字符串替换指定的字符串:

namespace MSWordReplacement
{
    class Program
    {
        static void Main(string[] args)
        {
            Application app = new Application();
            Document doc = app.Documents.Open(@"C:\Sample.docx");

            // Assign a search string to a variable.
            object findText = "Find me.";

            // Clear formatting from previous searches.
            app.Selection.Find.ClearFormatting();

            if (app.Selection.Find.Execute(ref findText))
            {
                // Replace new text.
                app.Selection.Text = "You found me!";
            }
            else
            {
                // Do somthing else.
            }

            doc.Close(true);
            app.Quit();
        }
    }
}
作为警告,您应该知道此软件包正在工作,但它可能与dot net core不完全兼容

有关更多信息,请使用此链接:

要替换MS word中的特定单词,首先应添加nuget中的以下参考:

Install-Package Microsoft.Office.Interop.Word
此示例代码用另一个字符串替换指定的字符串:

namespace MSWordReplacement
{
    class Program
    {
        static void Main(string[] args)
        {
            Application app = new Application();
            Document doc = app.Documents.Open(@"C:\Sample.docx");

            // Assign a search string to a variable.
            object findText = "Find me.";

            // Clear formatting from previous searches.
            app.Selection.Find.ClearFormatting();

            if (app.Selection.Find.Execute(ref findText))
            {
                // Replace new text.
                app.Selection.Text = "You found me!";
            }
            else
            {
                // Do somthing else.
            }

            doc.Close(true);
            app.Quit();
        }
    }
}
作为警告,您应该知道此软件包正在工作,但它可能与dot net core不完全兼容


有关更多信息,请使用此链接:

使用文件流永远不会起作用,因为它不知道底层文件类型。您可能想了解Word Interop。使用Microsoft.Office.Interop.Word程序集,您可以从文档中获取内容和格式。您知道使用Word Interop执行此操作的任何示例吗?只需使用Google…:)
。docx
可以像zip文件一样提取。它包含一组可由标准C#库解析的
.xml
文件。在进行所需的更新后,您应该能够将其压缩回
.docx
文件。Opemxmlpowertools可以帮助您使用filestream,因为它不知道底层文件类型,所以永远不会工作。您可能想了解Word Interop。使用Microsoft.Office.Interop.Word程序集,您可以从文档中获取内容和格式。您知道使用Word Interop执行此操作的任何示例吗?只需使用Google…:)
。docx
可以像zip文件一样提取。它包含一组可由标准C#库解析的
.xml
文件。在进行所需的更新后,您应该能够将其压缩回
.docx
文件。Opemxmlpowertools可以帮助您感谢Sajad。这是有效的,所以我认为这是正确的答案。我做了一些研究,想知道使用DocX是否会更好?你知道DocX吗?如果知道的话,这对我来说是不是一个更好的选择?这种叫做“wordautomation”的用法,你可以在web上找到很多文档来了解它的工作原理。通常,您可以在Word自动化中实现MS Word的大部分功能。因此,如果您对C#不是很精通,请选择可以在整个web上找到更多文档的软件包。谢谢Sajad。这是有效的,所以我认为这是正确的答案。我做了一些研究,想知道使用DocX是否会更好?你知道DocX吗?如果知道的话,这对我来说是不是一个更好的选择?这种叫做“wordautomation”的用法,你可以在web上找到很多文档来了解它的工作原理。通常,您可以在Word自动化中实现MS Word的大部分功能。因此,如果您对C#不是很精通,请选择可以在整个web上找到更多文档的软件包。