使用 C#,有没有一种好方法可以在 docx 文件中查找和替换文本字符串,而无需在该计算机上安装 word?
是的,使用Open XML。这里有一篇文章可以解决您的具体问题:为 Word 2007 Open XML 格式文档创建简单的搜索和替换实用程序
要使用此文件格式,一种选择是使用 Open XML 格式化应用程序编程接口 (API) DocumentFormat.OpenXml.Packaging 命名空间。类、方法和 此命名空间中的属性位于 DocumentFormat.OpenXml.dll 文件。您可以通过以下方式安装此 DLL 文件 安装 Open XML 格式 SDK 版本 1.0。本次活动的成员 命名空间允许您轻松使用 Excel 的包内容 2007 工作簿、PowerPoint 2007 演示文稿和 Word 2007 文件。
...
Private Sub Search_Replace(ByVal file As String) Dim wdDoc As WordprocessingDocument = WordprocessingDocument.Open(file, True) ' Manage namespaces to perform Xml XPath queries. Dim nt As NameTable = New NameTable Dim nsManager As XmlNamespaceManager = New XmlNamespaceManager(nt) nsManager.AddNamespace("w", wordmlNamespace) ' Get the document part from the package. Dim xdoc As XmlDocument = New XmlDocument(nt) ' Load the XML in the part into an XmlDocument instance. xdoc.Load(wdDoc.MainDocumentPart.GetStream) ' Get the text nodes in the document. Dim nodes As XmlNodeList = Nothing nodes = xdoc.SelectNodes("//w:t", nsManager) Dim node As XmlNode Dim nodeText As String = "" ' Make the swap. Dim oldText As String = txtOldText.Text Dim newText As String = txtNewText.Text For Each node In nodes nodeText = node.FirstChild.InnerText If (InStr(nodeText, oldText) > 0) Then nodeText = nodeText.Replace(oldText, newText) ' Increment the occurrences counter. numChanged += 1 End If Next ' Write the changes back to the document. xdoc.Save(wdDoc.MainDocumentPart.GetStream(FileMode.Create)) ' Display the number of change occurrences. txtNumChanged.Text = numChanged End Sub
您也可以尝试Aspose.Words for .NET以便查找并替换Word文档中的文本。该组件不需要安装 MS Office。该 API 非常简单且易于使用和实现。
披露:我在 Aspose 担任开发人员布道师。
或者您可以尝试 DocxTemplater。一个开源库。不像 Aspose 那样复杂,而是开源的。 https://github.com/Amberg/DocxTemplater