2017-12-29 31 views
1

내 데이터 원본은 많은 하이퍼 링크 (1000s 실행 중)가 포함 된 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

감사합니다. 이 작동합니다. 나는 어떤 형식화 (다행히도)가 없으므로 이것으로 내 requriement만으로 충분합니다. – user9145313