Я использую эту процедуру C#, которая добавит гиперссылки в столбец G книги. Он работает в 99% случаев, но если значение в столбце A содержит '
, то синтаксис не добавляет действительной гиперссылки. Я думал, что приходилось специальные символы в моей строке кода, который читаетДобавление гиперссылок через код в Excel
if (cellVal == "*,*"
|| cellVal == "*'*"
|| cellVal == "*&*"
|| cellVal == "*-*"
|| cellVal == "*.*")
Однако, когда пошагового код он ВСЕГДА идет к else
блока, и я не знаю, почему. Например, приведенные ниже значения явно имеют '
в них, но опять-таки код просто поражает else
блок
Гараж Джо
Джека Burger Shack
Ларри Giant встряхивания
Боб варки
Что мне нужно изменить в этом синтаксисе, чтобы гиперссылка была создана надлежащим образом?
public static void AddHyperlinksToExcel()
{
long lr, i;
string cellVal;
WS = xlApp.ActiveWorkbook.ActiveSheet;
lr = WS.Cells[WS.Rows.Count, 2].End(Excel.XlDirection.xlUp).Row;
for (i = 2; i <= lr; i++)
{
Object Anchor = WS.Cells[i, 7];
Object TextToDisplay = Convert.ToString(WS.Cells[i, 9]);
cellVal = WS.Cells[i, 1].Value;
rangeToHoldHyperlink = WS.Range["G" + i];
if (cellVal == "*,*" || cellVal == "*'*" || cellVal == "*&*" || cellVal == "*-*" || cellVal == "*.*")
{
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + cellVal + "'!A1", "", TextToDisplay);
}
else
{
xlApp.ActiveSheet.Hyperlinks.Add(Anchor, "", "'" + cellVal + "'!A1", "", TextToDisplay);
}
}
}
Что такое тип данных cellVal шагов? Я предполагаю, что это не чистая строка .net. Кажется, вы выполняете сопоставление с шаблоном, что не является функцией строки .net, поэтому я предполагаю, что это какой-то тип данных Excel? – PhillipH
cellVal - текстовая строка, это значение столбца A рабочего листа Excel. Это столбец A рабочего листа и содержит текстовые значения с примерами, перечисленными в моем сообщении. если я щелкнул правой кнопкой мыши по ячейке и перешел в ячейку форматирования под вкладкой «Число», она указана как «Общая» – BellHopByDayAmetuerCoderByNigh
Извините - на самом деле я не ответил на мой запрос; cellVal не может быть типом данных System.String, как определено в .net, поскольку он не поддерживает подстановочные соответствия с использованием «==», поэтому он должен быть указанным типом данных Excel. Поместите контрольную точку в код и сообщите мне, какая переменная cellValue типа данных. Как только мы узнаем, что мы можем найти документы, на которые «==» действительны для соответствия.Я очень подозреваю, что для некоторых экранированных символов требуется специальная обработка. – PhillipH