Thakur JAI SINGH Ответов: 2

Как добавить гиперссылку в лист excel программно


Привет,
Я создал файл excel с несколькими листами, содержащими некоторые данные на каждом листе.

И создал еще один лист, чтобы иметь запись гиперссылки для каждого листа все эти листы создаются программно .


Например предположим что в файле excel есть 10 листов которые создаются программно будет еще один лист с именем hyperlink который будет
содержать гиперссылку на все остальные листы.

Я хочу добавить все эти гиперссылки программно.

ZurdoDev

Все, что вам нужно сделать, это записать макрос, делающий это, а затем вы можете увидеть код, который вам нужен, и можете изменить его при необходимости.

2 Ответов

Рейтинг:
2

shakti pandey

Спасибо Джай, но в последней строке цикла for вам нужно добавить sheetName в одинарную кавычку, тогда он будет работать нормально.

hyperlinkCell.Hyperlink.Location = "'" + sheetName.ToString()  + "'" + "!A1";


-Шакти Пратап Пандей


Рейтинг:
2

Thakur JAI SINGH

Цитата:
@BNotr я использую следующий код, он создает гиперссылку и добавляет ее в заданное место, давая ошибку "ССЫЛКА недействительна"

//фрагмент кода

private void AddHyperLink(Workbook xlWorkBook,int nfaultCount)
{

Превосходить.Рабочий лист xlWorkSheet = (Excel.Рабочий лист)xlWorkBook.Worksheets.get_Item(1);
Теперь датавремя = Датавремя.Сейчас;
xlWorkSheet.Name = "Резюме";
xlWorkSheet.Ячейки[3, 2] = "Сведения О Моментальном Снимке";
xlWorkSheet.Ячейки[3,2].EntireRow.Font.Жирный = истина;
xlWorkSheet.Диапазон[xlWorkSheet.Ячейки[3, 1], xlWorkSheet.Ячейки[3, 2]].Merge(); //код для объединения ячеек
xlWorkSheet.Выберите(Тип.Отсутствует);

xlWorkSheet.Ячейки[6, 1] = "снимок, сделанный в";
xlWorkSheet.Ячейки[6, 2] = сейчас;
xlWorkSheet.Ячейки[8, 1] = "Нажмите на гиперссылки ниже, чтобы перейти к соответствующему листу";
xlWorkSheet.Диапазон[xlWorkSheet.Ячейки[8, 1], xlWorkSheet.Ячейки[8, 6]].Merge(); //код для объединения ячеек
xlWorkSheet.Ячейки[8, 1].EntireRow.Font.Жирный = истина;


for (int i = 1; i <= nfaultCount; i++)
{
int x = i + 9;
строка str = "код неисправности "+i + " of " + nfaultCount; //тестовая ссылка as
строка strRange1 = "A" + x;
строка strRange2 = "A" + x;
string strRange = strRange1 + ":" + strRange2; //расположение ссылки

ассортимент ВАР = xlWorkSheet.get_Range(strRange);

// strRange1 = "!" + strRange1;

// i+" of "+nfaultCount имя целевого листа
строка strp="#" + i + " of " +nfaultCount + strRange1;

Диапазон.Ячейки.Гиперссылки.Добавить(диапазон,СОНО, тип.Отсутствует ссылка "код неисправности", ул.);
}

xlWorkSheet.Столбцы["A:B"].Автофит();



}


Пожалуйста, помогите мне


Outeriesself

Тхакур попробуй это:

ExcelFile workbook = ExcelFile.Нагрузка("Sample.xlsx");
ExcelWorksheet hyperlinkSheet = рабочая книга.Worksheets.Add("Гиперссылки");

for (int i = 0; i < workbook.Рабочий лист.Граф - 1; i++)
{
строки листа = книги.Рабочие листы[i].имя;

ExcelCell hyperlinkCell = гиперссылочный лист.Ячейки[i, 0];
hyperlinkCell.Value = "перейти к" + sheetName;

гиперлинкселл.Стиль.Шрифт.UnderlineStyle = UnderlineStyle.Одиночный;
гиперлинкселл.Стиль.Шрифт.Color = SpreadsheetColor.FromName(ColorName.Blue);
гиперлинкселл.Гиперссылка.Location = sheetName + "!A1";
}

рабочая тетрадь.Сохранить("Образец Out.xlsx");

Код использует эта библиотека обработки excel для .net.
Это позволит вам для чтения файлов xls и xlsx с помощью C#, выполните итерацию по листам файла excel и создайте новый лист с гиперссылками, указывающими на каждый лист.