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