2017-10-14 14 views
0

現在、正しい順序で単語文書をループしたいと思っています。これについては、& switch文の場合に試しました。それでも、それは単語の文書内の順序によって分類されます。これは単なる例です。私の場合の出力は "blabla1"、 "blabla2"、 "blabla3"などとなります。代わりに "blabla2"、 "blabla1"、 "blabla3"になりたいですか?指定した順序で単語のContentControlsをループする

namespace KontraktTilTekst { 
public partial class Form1: Form { 
    public Url url = new Url(); 
    public bool[] success = new bool[2]; 

    public Form1() { 
    InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) { 
    url.FileExist = File.Exists(url.WordPath) ? true : false; //Tjekker om urlen er der 
    if (url.FileExist) { 
    if (!String.IsNullOrEmpty(url.TxtFileName)) //Tjekker om feltet til notepadfilen ikke er tomt 
    { 
    StreamWriter NotepadFile = new StreamWriter(url.TxtPath); 
    Microsoft.Office.Interop.Word.Application word = new ApplicationClass(); 
    object miss = System.Reflection.Missing.Value; 
    object path = url.WordPath; // <-------- Path where document is 
    object readOnly = false; 
    Document document = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, 
     ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, 
     ref miss, ref miss); 


    word.Documents.Open(url.WordPath); 
    foreach(ContentControl ff in document.ContentControls) { 
     if (ff.Title == "something2") { 
     NotepadFile.Write("blabla2"); 
     } else if (ff.Title == "something1") { 
     NotepadFile.Write("blabla1"); 
     } else if (ff.Title == "something3") { 
     NotepadFile.Write("blabla3"); 
     } 
    } 
    NotepadFile.Close(); 
    document.Close(ref miss, ref miss, ref miss); 
    word.Quit(); 
    } else { 
    MessageBox.Show("Husk at give txt filen et navn"); 
    } 
    } else { 
    //MessageBox.Show(url.FileExist.ToString()); 
    MessageBox.Show("Prøv med en anden sti"); 
    } 
    } 
} 
} 

答えて

0

ドキュメント内の指定されたタイトルを持つContentControlを見つける別の機能があります。そして、あなたが見たいタイトルの順にこの関数を呼び出します。

private void button1_Click(object sender, EventArgs e) 
{ 
    Document wordDocument = ....;/// Your code to open document 

    if(HasContentControlWithTitle(wordDocument, "something2")) 
    { 
     NotepadFile.Write("blabla2"); 
    } 
    if(HasContentControlWithTitle(wordDocument, "something1")) 
    { 
     NotepadFile.Write("blabla1"); 
    } 
    if(HasContentControlWithTitle(wordDocument, "something3")) 
    { 
     NotepadFile.Write("blabla3"); 
    } 
} 

bool HasContentControlWithTitle(Document wordDocument, string title) 
{ 
    ContentControl result = GetContentControlByTitle(wordDocument, title); 
    return result != null; 
} 

ContentControl GetContentControlByTitle(Document wordDocument, string title) 
{ 
    ContentControl result = null; 

    foreach(ContentControl ff in wordDocument.ContentControls) 
    { 
     if(ff.Title == title) 
     { 
      result = ff; 
      break; 
     } 
    } 

    return result; 
} 
+0

ありがとうございました! それは働いて魅力が好きだった。 テキストを返すための特別な関数を追加しました。 – ISeeSharp

関連する問題