このタスクは、.NETを使用してWord文書の特定のキーワードを置き換えることです。元の書式と文書構造を保持するための最も高速で信頼性の高い方法は何でしょうか?Word文書のテキストをプログラムで置換する最速の方法
答えて
あなたは単語がインストールされている場合、それはかなり簡単です。
GACからWord docアセンブリを参照します。単語文書を読み込んで、その中のデータを置き換えることができます。
これは私がここにクライアント名などを入れてワード文書を印刷するアプリからのものです。 (切り取って貼り付けたセクション)
public void ReplaceWordDoc(ref Document doc, object data)
{
object missing = Missing.Value;
List<ReplacerSearch> search = GetSearchList(data);
foreach (var searchItem in search)
{
foreach (Range tmpRange in ((Document)doc).StoryRanges)
{
// Set the text to find and replace
tmpRange.Find.Text = searchItem.Find;
tmpRange.Find.Replacement.Text = searchItem.Replace;
// Set the Find.Wrap property to continue (so it doesn't
// prompt the user or stop when it hits the end of
// the section)
tmpRange.Find.Wrap = WdFindWrap.wdFindContinue;
// Declare an object to pass as a parameter that sets
// the Replace parameter to the "wdReplaceAll" enum
object replaceAll = WdReplace.wdReplaceAll;
// Execute the Find and Replace -- notice that the
// 11th parameter is the "replaceAll" enum object
tmpRange.Find.Execute(ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref replaceAll,
ref missing, ref missing, ref missing, ref missing);
}
}
}
^この部分は検索/置換します。 ReplacerSearch(ワウ・バッド・ネーム)のリストは、Find、Replaceの2つのプロパティです。 Findは検索するテキスト、Replaceは置き換えるテキストです。
次に、指定されたファイル名(パス/名前)に基づいて、wordのインスタンスを作成してドキュメントを開き、置き換えを行い、次に保存または印刷することができます。
object fileName = string.Empty,
trueValue = true,
missing = Missing.Value,
falseValue = false;
var app = new ApplicationClass();
var doc = new Document();
try
{
doc = app.Documents.AddOld(ref fileName, ref missing);
//doc = app.Documents.Add(ref fileName, ref missing, ref missing, ref missing);
// Loops through the StoryRanges (sections of the Word doc)
ReplaceWordDoc(ref doc, item);
//Save or print...
}
catch (Exception ex)
{
Helpers.Logger.WriteToEventLog(ex.Message, EventLogEntryType.Error);
}
finally
{
if (doc != null)
{
doc.Close(ref falseValue, ref missing, ref missing);
}
}
if (app != null)
{
app.Application.Quit(ref falseValue, ref missing, ref missing);
}
希望します。
それは仕事をして、合理的に速く働きます。 – SharpAffair
新しいWordファイルは基本的にXMLドキュメントです。 Pythonなどの言語で通常のファイルとして開くことができますし、置き換えたい用語を検索することができます。一度見つけたら、ファイルを変更して保存するだけです。
おそらくXML文書に合わせた簡単な方法があるかもしれませんが、これはおそらく文字列ライブラリで行うことができます。
編集:.NETでこれを行うには、同じ方法論が機能するはずです。今すぐタグに気付いただけです。
保存するデフォルトのフォーマットはまだバイナリです。 –
OpenXML SDKはおそらくそうです。それはネットで、使い方が簡単です。問題は「見つかる単語」が最初の単語BOLDと残りの正規の単語で一貫して書式設定されていないと「単語」が単一の文字列として表示されないということですxmlは、RUNオブジェクトに分割されます。これは、xmlを適切に解析するために必要なすべてのものです。これは小さな仕事ではありません。 .netを使用して検索と置換を自動化するのが最も速く、合理的なパフォーマンスが必要です。 WordのFIND REPLACEは大したものではありませんが、確かにOKです。 – DarinH
MS WordのMail Merge
機能を使用してみると、この目的のために設計されています。
見てくださいhttp://support.microsoft.com/kb/301659
- 1. ENTIRE Word文書でプログラムで検索および置換する方法
- 2. テキストをWord文書の画像で検索して置換する
- 3. Microsoft Word 2007文書のテキスト置換ロジックを自動化しますか?
- 4. 最初のWord文書ページのみをPDFに変換する
- 5. Wordにテキストを追加する方法特定の位置の文書ですか?
- 6. RubyでWord文書の形式でファイルをプログラムで出力する最も良い方法は何ですか?
- 7. 文字列をバイナリに変換する最速の方法は?
- 8. MatlabでMS Word文書(.doc)を特定のセクションでプログラム的に開く方法
- 9. Windowsでシステム全体のテキスト置換をプログラムで実装する方法は?
- 10. Word文書のイメージサイズをプログラムで変更する
- 11. .NETライブラリMS Word文書をXPS文書に変換する
- 12. 他のExcel文書を検索して置換する方法
- 13. PHPでWord文書のヘッダー/フッターを作成する方法
- 14. テキストファイルのテキスト文字列を置き換える方法
- 15. 多くの文字列を実行する最速の方法はJavaで置き換えます
- 16. プログラムでUITextViewにテキストを書く方法
- 17. Word文書のヘッダーセクション内のテキストを検索する
- 18. COM /オートメーションを使わずにWord文書からテキストを抽出する最も良い方法は?
- 19. Apache FOPを使用してWord 2007文書をPDFに変換する方法
- 20. Word 2007文書からマクロ(VBA)コードをプログラムで抽出する
- 21. プログラムでWord文書を簡単に編集する
- 22. 文字列中のi番目の出現箇所を置換する最速の方法
- 23. Mongoのすべての文書でstringを置き換える方法
- 24. PythonのMicrosoft Word改行文字を置換する
- 25. Word文書を別の文書にコピー
- 26. テキスト置換を自動化する最適な方法は何ですか?
- 27. Delphi 2010:Word 2010文書のテキストを読み取る
- 28. Word文書のハイパーリンク
- 29. word文書をperlのpdfファイルに変換するには?
- 30. MS Word文書をPHPのhtmlに変換する
.NETである必要がありますか? Wordはこれを行うフル機能のマクロ言語(Visual Basic for Applications)を手に入れました。 VBAでマクロを記録することもできます。これをメールの機能と組み合わせて、仕事を完了させてください。実際に.NETを使用する必要がある場合は、VBAを.NETおよびOLEオートメーションに手作業で簡単に変換できます。または、実際にWordをインストールしないでこれを行う必要がありますか?ああ。 「最速」とは何ですか?最も速く実装するには? 1つのドキュメントで最高のパフォーマンスを発揮しますか?複数のドキュメントで最高のパフォーマンスを発揮しますか? –