3

小さな MSWord ドキュメントを読み込んで、その内容を文字列に格納しています。

この文字列には SOH 特殊文字が含まれています。新しいテキスト (.txt) ファイルに書き込む前に、"#placeholder1" のようなプレースホルダー文字列に置き換えたいと思います。MSWord文書を変更/編集したくないことに注意してください

string.Replace がこれに適しているかどうか、または別のルートに進む必要があるかどうかはわかりません。これは、SOH キャラクターに使用しているパラメーターにすぎない可能性があります。

提案?

4

2 に答える 2

0

次の関数を使用して、Microsoft Word ドキュメントのコンテンツを読み取ることができます ( への参照が必要ですMicrosoft.Office.Interop.Word)。

public string ReadWordDoc(string Path)
{
    // microsot word app object
    Microsoft.Office.Interop.Word.Application _objWord=null;

    // microsoft word document object
    Microsoft.Office.Interop.Word.Document _objDoc= null;

    // obj missing value (ms office)
    object _objMissing = System.Reflection.Missing.Value;

    // string builder object to hold doc's content
    StringBuilder _sb = new StringBuilder();

    try
    {
        // create new word app object
        _objWord= new Microsoft.Office.Interop.Word.Application();

        // check if the file exists
        if (!File.Exists(Path)) throw (new FileNotFoundException());

        // full path to the document
        object _objDocPath = Path;

        // readonly flag
        bool _objReadOnly = true;

        // open word doc
        _objDoc = _objWord.Documents.Open(
            ref _objDocPath,
            ref _objMissing,
            _objReadOnly,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing,
            ref _objMissing);

        // read entire content into StringBuilder obj
        for (int i = 1; i <= _objDoc.Paragraphs.Count; i++)
        {
            _sb.Append(_objDoc.Paragraphs[i].Range.Text.ToString());
           _sb.Append("\r\n");
        }

        // return entire doc's content
        return _sb.ToString();
    }
    catch { throw; }
    finally 
    {
        _sb = null;

        if (_objDoc != null) { _objDoc.Close(); }
        _objDoc = null;

        if (_objWord != null) { _objWord.Quit(); }
        _objWord = null;
    }
}
于 2013-05-13T17:44:31.003 に答える