このタスクは、.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. C#Word文書のテキストを検索して置き換える別の方法
- 3. Word文書。置換マーカー
- 4. Microsoft Word以外のWord文書内のハイパーリンクを置換する
- 5. テキストをWord文書の画像で検索して置換する
- 6. VBAで文字列の文字を置き換える最速の方法
- 7. C#Word文書、選択した範囲のテキストを置き換えますか?
- 8. Microsoft Word 2007文書のテキスト置換ロジックを自動化しますか?
- 9. 最初のWord文書ページのみをPDFに変換する
- 10. Word文書でプログラムで複数のテーブルを生成する方法
- 11. RubyでWord文書の形式でファイルをプログラムで出力する最も良い方法は何ですか?
- 12. Word文書内のすべての隠しテキストをプログラムで削除します
- 13. Wordにテキストを追加する方法特定の位置の文書ですか?
- 14. Linuxのコマンドラインで巨大なファイルの最初の行の文字列を置換する最速の方法は?
- 15. 文書を解析し、文字列を検索してJavaで文書に置き換える最も速く/最も効率的な方法
- 16. 文字列をバイナリに変換する最速の方法は?
- 17. Microsoft Wordのレビュー機能を共有の平文文書と置き換える方法
- 18. bashのテキスト文書の列の値を置換/更新する
- 19. MS Word VbaコマンドボタンWord文書にテキストを挿入する
- 20. Visual Basicを使用してWord文書のテキストをハイライト表示する方法
- 21. MatlabでMS Word文書(.doc)を特定のセクションでプログラム的に開く方法
- 22. Windowsでシステム全体のテキスト置換をプログラムで実装する方法は?
- 23. Excel文書をWord文書にリンクする方法
- 24. Word文書のイメージサイズをプログラムで変更する
- 25. プログラムでWord文書のプロパティを変更する
- 26. OpenXMLを使用して文書内のテキストを置換する
- 27. Applescript Excelシートのテキスト文書を検索して置換する
- 28. .NETライブラリMS Word文書をXPS文書に変換する
- 29. ChiwriterのテキストをWordに変換する方法
- 30. PHPでWord文書のヘッダー/フッターを作成する方法
.NETである必要がありますか? Wordはこれを行うフル機能のマクロ言語(Visual Basic for Applications)を手に入れました。 VBAでマクロを記録することもできます。これをメールの機能と組み合わせて、仕事を完了させてください。実際に.NETを使用する必要がある場合は、VBAを.NETおよびOLEオートメーションに手作業で簡単に変換できます。または、実際にWordをインストールしないでこれを行う必要がありますか?ああ。 「最速」とは何ですか?最も速く実装するには? 1つのドキュメントで最高のパフォーマンスを発揮しますか?複数のドキュメントで最高のパフォーマンスを発揮しますか? –