0

使用 ColdFusion 的新 XML 功能...是否可以在 Word 文档 (docx) 中查找/替换文本?我试图解决这个问题,因为 docx 文档可能有一段文本(要搜索的占位符)分布在多个 w:r(运行)上,这可能难以搜索和替换。

4

2 回答 2

0

我所做的是让 word 文档带有替换词,然后使用 7zip 的 CLI 提取 .docx 文件,因为它只是一个存档,替换单词并重新存档。这已被证明是非常有效的,并且根本不会弄乱 XML。

以下是替换单词“%SENTDATE%”的应用程序的一些示例代码。并非所有变量都在这里,但这应该足以让您入门。

<cfset EditFile = Output & "word\document.xml" />

<!--- Extract the New Document --->
<cfexecute name="7za.exe" arguments='x -y "#StartingFile#" -o"#Output#"' outputfile="#Dir#log_Extract.txt" />

<!--- Read in the file --->
<cfset WordDoc = FileRead( EditFile ) />

<!--- Replace Values --->
<cfset WordDoc = Replace( WordDoc, "%SENTDATE%", DateFormat( Now(), "MMMM DD, YYYY" ), "ALL" ) />

<!--- Save File --->
<cfset FileWrite( EditFile, WordDoc ) />

<!--- Delete Archive if it exists --->
<cfif FileExists( NewFile )>
    <cfset FileDelete( NewFile ) />
</cfif>

<!--- Repack Archive --->
<cfexecute name="7za.exe" arguments='a "#NewFile#" "#Output#*"' outputfile="#Dir#log_Archive.txt" />

<!--- Rename Archive --->
<cffile action="rename" source="#NewFile#" destination="#ListFirst( NewFile, "." )#.docx" />
于 2012-07-27T19:09:55.543 回答
0

可能吗?是的。

但是,MS 使用的 XML 模式非常冗长。我知道这是多余的,但是 XML 非常复杂。

使用 .NET 操作文档并在 CF 中使用 .NET 集成进行调用可能是一个更好的主意。我相信也有 Java 库,但我不确定它们使用起来是否容易或工作得如何。

于 2012-07-27T16:10:42.030 回答