0

ドキュメントの書式は変更しないでください。語順以外は何も変わらない。

書類 :

Word1 word2 word3 word2... -- END OF LINE OR PARAGRAPH
Word5 word1 word5 word4.....

反転後は次のようになります

1droW 2drow 3drow 2drow... -- END OF LINE OR PARAGHRAPH
5droW 1drow 5drow 4drow..... 

単語を 1 つずつ確認するためのこのコードは既にありますが、書式設定を失わずに変更する方法がわかりません。

string RT = "";


Word.Application wordObject = new Word.Application();
wordObject.Visible = false;

Word.Document docs = wordObject.Documents.Open(@"D:\ELAHE (J)\a.docx");

String strLine;
bool bolEOF = false;

docs.Characters[1].Select();

int index = 0;
do {

    object unit = Word.WdUnits.wdWord;
    object count = 1;
    wordObject.Selection.MoveEnd(ref unit, ref count);

    wordObject.Selection.InsertBefore("‭");
    strLine = wordObject.Selection.Text;
    RT += ++index + " - " + strLine + "\r\n"; 


    object direction = Word.WdCollapseDirection.wdCollapseEnd;
    wordObject.Selection.Collapse(ref direction);

    if (cnt++ > 100) break;

    if (wordObject.Selection.Bookmarks.Exists(@"\EndOfDoc")) bolEOF = true;
} while (!bolEOF);

docs.Close();
wordObject.Quit();
docs = null;
wordObject = null;
4

1 に答える 1

1

これを行う方法のサンプルを作成しました (C# 5.0、Word Interop v. 15 (Office 2013))。コードは各段落をループし、段落内の各単語を反転します。このコードには、行末記号 ( \r) が逆になっていないことを確認するためのチェックが含まれています。

\rこれが Word で使用される唯一の行末記号であると100% 確信しているわけではないので、他の種類の記号 (たとえば\r\n類似のもの) に遭遇した場合は、これらのチェックも含めるのがかなり簡単なはずです。

var wordApplication = new Application() { Visible = true };
var myDocument = wordApplication.Documents.Open(@"C:\Users\...\my.docx");

for (var i = 1; i <= myDocument.Paragraphs.Count; i++)
{
    var paragraph = myDocument.Paragraphs[i];
    var words = paragraph.Range.Words.Cast<Range>().Select(r => r.Text).ToList();

    // Empty paragraph -> continue
    if(words.Count == 1 && words[0] == "\r")
        continue;

    for (var j = 0; j < words.Count; j++)
    {
        var word = words[j];

        // Should not be reversed
        if(word == "\r")
            continue;

        var reversed = new string(word.Trim().Reverse().ToArray());

        words[j] = (word.EndsWith(" ")) ? reversed + " " : reversed;
    }

    paragraph.Range.Text = string.Join("", words);
}
于 2013-02-26T22:33:41.313 に答える