0

ColdFusion の新しい XML 関数を使用すると、Word 文書 (docx) 内のテキストを検索/置換できますか? docx ドキュメントにはテキスト (検索するプレースホルダー) が複数の w:r (実行) に分散している可能性があり、検索と置換が困難になる可能性があるため、これを実現するために頭を悩ませていました。

4

2 に答える 2

0

私がやっていることは、単語ドキュメントに置換単語を付けてから、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 を使用してドキュメントを操作し、.NET 統合を使用して CF 内から呼び出しを行うことをお勧めします。Java ライブラリもあると思いますが、どれだけ使いやすいか、どれだけうまく機能するかはわかりません。

于 2012-07-27T16:10:42.030 に答える