Как получить гиперссылку в формуле с помощью EPPlus - PullRequest
0 голосов
/ 26 апреля 2019

Мне нужно получить точную ссылку внутри формулы (HYPERLINK) и сохранить ее в базе данных.Вот мой код для получения ссылки,

answerList.Add(new SurveyCompetitorAnswer
{

    MainSurveyId = id,
    Answer = workSheet.Cells[AnswerRowRange].Text,
    DateCreated = DateTime.Now,
    Link = workSheet.Cells[AnswerRowRange].Formula,
    SurveyQuestionId = item.Id,
    SurveyCompetitorId = comp.Id
});

, но он получает весь текст ФОРМУЛЫ.пример (HYPERLINK ("https://www.owler.com/company/sproutsolutions","0.5"))

...

мне нужно просто https://www.owler.com/company/sproutsolutions.

Я пытался использовать Link = workSheet.Cells[AnswerRowRange].Hyperlink,, но его назначение только для SETссылки, а не GET ссылки.

РЕДАКТИРОВАТЬ: я пытался использовать var link = workSheet.Cells[AnswerRowRange]; и Link = link.Hyperlink.AbsoluteUri, но он показывает исключение нулевой ссылки

enter image description here

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Это то, что я сделал вместо этого.

   var link = workSheet.Cells[AnswerRowRange].Formula;
   int index = link.IndexOf(",");
   if (index > 0)
   {
      link = link.Substring(0, index);
   }
   var onemore = link.Substring(11);
   var final = onemore.Substring(0,onemore.Length -1);

   answerList.Add(new SurveyCompetitorAnswer
   {
      MainSurveyId = id,
      Answer = workSheet.Cells[AnswerRowRange].Text,
      DateCreated = DateTime.Now,
      Link = final,
      SurveyQuestionId = item.Id,
      SurveyCompetitorId = comp.Id
   });

теперь работает нормально.

0 голосов
/ 26 апреля 2019

Похоже, вы можете взять формулу HYPERLINK("https://www.owler.com/company/sproutsolutions","0.5") и извлечь часть ... в ("...",.Поэтому вам нужен способ прочитать и извлечь подстроку из строки (в данном случае формула - это строка, а URL - это подстрока).

Я не эксперт в этомкаким-либо образом, но поможет ли один из них?

Epplus читает гиперссылку с HTML-фрагментом i

Как извлечь URL ссылки из ячейки Excel

Извлечение URL из гиперссылки в ячейке Excel

* Примечание для будущих читателей:
Автор исходного вопроса размещенее собственное решение.Ее метод работает, но только , когда содержимое ячейки, содержащей гиперссылку, содержит формулу HYPERLINK("URL","YourFriendlyNameGoesHere") и не имеет пробелов перед "URL" в HYPERLINK("URL",....), как вСитуация: HYPERLINK( "URL",....), которая может возникнуть в результате случайного ввода пробелов в ячейку (может возникнуть проблема даже с одним пробелом).

Эту ситуацию можно исправить с помощью метода .IndexOf("\""), чтобы найти индексную позицию " первой кавычки, вместо простого использования .Substring(11), который предполагает, что индекс позиции 11 в HYPERLINK("URL",....) являетсяначало URL, что может не иметь места, если есть дополнительный пробел.Вместо этого используйте .Substring(...) с позицией индекса " + 1 вместо ... в качестве аргумента .Substring(...).

...