2017-12-29 5 views
1

私のデータソースは、多数のハイパーリンク(1000秒間実行中)を含むExcelファイルです。 OpenXML SDKとC#を使用してこれらのプログラムをすべて削除したいと思います。OpenXMLを使用してExcelファイルからすべてのハイパーリンクを削除します。

私の研究では、主にExcel/Wordファイルへのリンクを追加する方法を説明する記事がありました。 thisで提供されるソリューションは、ドキュメント内の最初のハイパーリンクを取得し、それを削除します。

  var hyperLinks = worksheetPart.Worksheet.Descendants<Hyperlinks>().First(); 

      var hyperRel = worksheetPart.HyperlinkRelationships; 

      foreach (Hyperlink item in hyperLinks) 
      { 
       if(hyperRel.First().Id == item.Id) 
       { 
        worksheetPart.DeleteReferenceRelationship(item.Id.ToString()); 
        item.Remove(); 
       } 

       if (hyperLinks.Count() == 0) 
        hyperLinks.Remove(); 
      } 

これを変更してすべてのリンクを列挙し、ループする方法を教えてください。どんな指針も大変ありがとう!

答えて

0

以下のコードはワークシートで動作し、上記のコードを置き換えるために削除することができます。各ハイパーリンク参照関係とハイパーリンクコレクションが削除されます。

 var hyperLinkCollection = worksheetPart.Worksheet.Descendants<Hyperlinks>().First(); 

     if (hyperLinkCollection.Any()) 
     { 
      var hyperLinks = hyperLinkCollection.Descendants<Hyperlink>(); 

      foreach (var hyperLink in hyperLinks) 
      { 
       worksheetPart.DeleteReferenceRelationship(hyperLink.Id); 
       //remove cell style using hyperLink.Reference 
      } 
      hyperLinkCollection.Remove(); 

      worksheetPart.Worksheet.Save(); 
     } 

:私はハイパーリンクが含まれてセルに任意のスタイルを削除するには、コードを書いていません。たとえば、ハイパーリンクを含むセルに青い下線付きテキストのスタイルが設定されている場合、このコードの実行後もこの書式設定は維持されます。

ハイパーリンクのスタイルを削除するには、上記のコメント行に別の方法が含まれており、hyperlink referenceを使用する必要があります。しかし、質問の一部として尋ねられることはなく、セルにハイパーリンクの色(つまり、表の行の色、ハイライトなどが交互に表示される)以上のスタイリングがある場合は、実行するのが難しいです。

+0

ありがとう!これは機能します。私はどんな書式設定もしていません(ありがたいことに)。これだけで十分です。 – user9145313

関連する問題