2016-05-17 3 views
0
 using (WordprocessingDocument myDoc = WordprocessingDocument.Open(@"E:\abdullah\import1.docx", true)) 
     { 
      MainDocumentPart mainPart = myDoc.MainDocumentPart; 
      Hyperlink hp = new Hyperlink(); 
      hp.Anchor = "artifact location"; 
      hp.DocLocation = @"E:\abdullah\test123.docx"; 
      foreach (var para in mainPart.Document.Descendants<Paragraph>()) 
      { 
       //Console.WriteLine(para.InnerText); 
       if (para.InnerText.Equals("Functional Requirements:")) 
       { 
        Console.WriteLine(para.InnerText); 
       } 
      } 
     } 
  1. を使用して、単語内の既存の段落またはテキストにハイパーリンクを追加したいです。
  2. 私が作成したハイパーリンクよりも、削除する方法が必要な場合。
+0

ここでは何が効果がありませんか?コンソールに印刷している行には行かないのですか? –

+0

あなたの問題ではなかったので私の答えを削除しました。私はopenxml sdkを使ってこれを管理しているのを本当に認識していませんが、ドキュメントから、段落のPrependChild()そのリンクを削除して既存の段落を削除します。お役に立てれば。 –

+0

私はそれを指摘してくれたことに感謝します –

答えて

0

これを試しましたか?

if (para.InnerText.Equals("Functional Requirements:")) 
{ 
    para.Append(hp); 
} 
+0

こんにちは。段落の子に含まれるハイパーリンクを削除する場合は、RemoveChild ()メソッドを使用できます。 –

1

こんにちはよく私はあなたが持っているしたいハイパーリンクの種類を知りませんが、私は同じ文書内のブックマークへのハイパーリンクの例を与える、私たちは名前の段落に追加ブックマークを持ってsuposeてみましょうこのような「モップ」:

OpenXmlProcess.BookmarkStart bMrkS = new OpenXmlProcess.BookmarkStart() { Name = "Mop", Id = "1" }; 
OpenXmlProcess.BookmarkEnd bMrkE = new OpenXmlProcess.BookmarkEnd() { Id = "1" }; 
myParagraph.Append(bMrkS); 
myParagraph.Append(bMrkE); 

その後、この方法は、私たちには、テキスト「機能要件」にハイパーリンクを追加することができます。

if (para.InnerText == "Functional Requirements:") 
{ 
    //--We remove the current texts of the paragraph, a new one will be added within the hyperlink 
    foreach (OpenXmlProcess.Text tes in para.Descendants<OpenXmlProcess.Text>().ToList()) 
    { 
     tes.Remove(); 
    } 
    //-------------Apply some style-------------- 
    OpenXmlProcess.RunFonts runFont = new OpenXmlProcess.RunFonts(); 
    runFont.EastAsia = "Arial"; 
    OpenXmlProcess.FontSize size = new OpenXmlProcess.FontSize(); 
    size.Val = new OpenXML.StringValue("20"); 
    //------------------------------------------- 
    OpenXmlProcess.Hyperlink hyp = new OpenXmlProcess.Hyperlink() { History = true, Anchor = "Mop" }; //--Point to the bookmark 
    OpenXmlProcess.Run ruG = new OpenXmlProcess.Run() { RsidRunProperties = "00D56462" }; 
    OpenXmlProcess.RunProperties runProp = new OpenXmlProcess.RunProperties(); 
    OpenXmlProcess.RunStyle rnStyl = new OpenXmlProcess.RunStyle() { Val = "Hyperlink" }; 
    runProp.Append(rnStyl); 
    runProp.Append(runFont); 
    runProp.Append(size); 
    //----Create a new text with our original string and append it to the hyperlink 
    OpenXmlProcess.Text txL = new OpenXmlProcess.Text(); 
    txL.Text = "Functional Requirements:"; 

    ruG.Append(runProp); 
    ruG.Append(txL); 

    hyp.Append(ruG); 
    para.Append(hyp); //Append the hyperlink to our paragraph 
} 

基本的に私はexistenテキストを削除し、パラに追加しますブックマークへのハイパーリンクを、テキストが有する文字列でグラフ化する。ハイパーリンクを削除するには

がほぼ同じである、現在のテキストを削除し、通常の1を追加します。あなたはそれが、おかげであると思われる場合

if (para.InnerText == "Functional Requirements:") 
{ 
    //--We remove the current text, a new one will be added within the hyperlink 
    foreach (OpenXmlProcess.Text tes in para.Descendants<OpenXmlProcess.Text>().ToList()) 
    { 
      tes.Remove(); 
    } 
    //-------------Apply some style-------------- 
    OpenXmlProcess.RunFonts runFont = new OpenXmlProcess.RunFonts(); 
       runFont.EastAsia = "Arial"; 
    OpenXmlProcess.FontSize size = new OpenXmlProcess.FontSize(); 
    size.Val = new OpenXML.StringValue("20"); 
    //------------------------------------------- 
    OpenXmlProcess.Run ruG = new OpenXmlProcess.Run() { RsidRunProperties = "00D56462" }; 
    OpenXmlProcess.RunProperties runProp = new OpenXmlProcess.RunProperties(); 
    runProp.Append(runFont); 
    runProp.Append(size); 
    //----Create a new text with our original string 
    OpenXmlProcess.Text txL = new OpenXmlProcess.Text(); 
    txL.Text = "Functional Requirements:"; 

    ruG.Append(runProp); 
    ruG.Append(txL); 
    para.Append(ruG); 
} 

は、それはあなたのお役に立てば幸い、答えとしてそれをマークしてください。

関連する問題