Добавление гиперссылки в документ Excel - C#
Формулировка задачи:
Здравствуйте! Приложение на C# генерирует документ Excel, в который выводятся UNC пути ко всем файлам, расположенным, например, в папке d:\Advanced Installer\ .
Мне нужно вместо путей выводить кликабельные гиперссылки на файлы, расположенные по данным путям:
Но если я перехожу по каждой из этих ссылок, выдает ошибку:
При нажатии на кнопку "Сгенерировать файл Excel" такой код:
Код GetFiles():
Код button_Click():
Подскажите, где ошибка?
listBox1.Items.Clear();
GetFiles(dir1);
button_Click(sender, e);
MessageBox.Show("Файл Excel сгенерирован!"); public void GetFiles(string dir)
{
try
{
System.IO.DirectoryInfo DirectoryInfo = new System.IO.DirectoryInfo(dir);
foreach (System.IO.FileInfo FileInfo in DirectoryInfo.GetFiles())
{
//Здесь мы выводим информацию о полученном файле
listBox1.Items.Add(FileInfo.FullName);
}
foreach (System.IO.DirectoryInfo Dir in DirectoryInfo.GetDirectories())
{
try { GetFiles(Dir.FullName); }
catch { }
}
lCount = listBox1.Items.Count;
}
catch (UnauthorizedAccessException ex)
{
MessageBox.Show(ex.ToString());
Log.Write(ex);
}
} private void button_Click(object sender, EventArgs e)
{
int i = Convert.ToInt32(((Button)(sender)).Tag);
switch (i)
{
case 1:
excelapp = new Excel.Application(); // запуск Excel
excelapp.Visible = true;
// создание рабочей книги из 3-х листов:
excelapp.SheetsInNewWorkbook = 3; // Свойство SheetsInNewWorkbook возвращает или устанавливает количество листов, автоматически помещаемых Excel в новые рабочие книги.
excelapp.Workbooks.Add(Type.Missing);
//Получаем набор ссылок на объекты Workbook (на созданные книги)
excelappworkbooks = excelapp.Workbooks;
//Получаем ссылку на книгу 1 - нумерация от 1
excelappworkbook = excelappworkbooks[1];
//Ссылку можно получить и так, но тогда надо знать имена книг,
//причем, после сохранения - знать расширение файла
//excelappworkbook=excelappworkbooks["Книга 1"];
//Запроса на сохранение для книги не должно быть
//Получаем массив ссылок на листы выбранной книги
excelsheets = excelappworkbook.Worksheets;
excelappworkbook.Saved = true;
//Получаем ссылку на лист 1
excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
//Делаем третий лист активным
excelworksheet.Activate();
//Вывод в ячейки используя номер строки и столбца Cells[строка, столбец]
for (int m = 1; m <= lCount; m++)
{
excelcells = (Excel.Range)excelworksheet.Cells[m, 1];
//Выводим координаты ячеек
excelcells.Value2 = listBox1.Items[m - 1];
/*
excelcells.Font.Size = 20;
excelcells.Font.Italic = true;
excelcells.Font.Bold = true;
*/
Excel.Range rangeToHoldHyperlink = (Excel.Range)excelworksheet.Cells[m, 1];
string hyperlinkTargetAddress = excelcells.Value2.ToString();
excelworksheet.Hyperlinks.Add
(rangeToHoldHyperlink,
string.Empty,
hyperlinkTargetAddress,
"Screen Tip Text",
hyperlinkTargetAddress);
}
excelapp.Columns.AutoFit(); // выровнять ширину колонок по самой широкой записи
break;
case 2:
//Устанавливаем формат
excelapp.DefaultSaveFormat = Excel.XlFileFormat.xlWorkbookDefault;
try
{
if (File.Exists(excelapp.DefaultFilePath)) // если файл по пути по умолчанию существует
{
//Будем спрашивать разрешение на запись поверх существующего документа
excelapp.DisplayAlerts = true; // При значении свойства DisplayAlerts=true Excel будет спрашивать - записать ли сохраняемый документ поверх существующего, при значении false - нет.
//Сохраняем результат
excelappworkbooks = excelapp.Workbooks;
excelappworkbook = excelappworkbooks[1];
excelappworkbook.SaveAs(Type.Missing, //object Filename
Type.Missing, //object FileFormat
Type.Missing, //object Password
Type.Missing, //object WriteResPassword
Type.Missing, //object ReadOnlyRecommended
Type.Missing, //object CreateBackup
Excel.XlSaveAsAccessMode.xlNoChange,//XlSaveAsAccessMode AccessMode
Type.Missing, //object ConflictResolution
Type.Missing, //object AddToMru
Type.Missing, //object TextCodepage
Type.Missing, //object TextVisualLayout
Type.Missing); //object Local
}
}
catch (COMException ex)
{
MessageBox.Show(ex.ToString());
Log.Write(ex);
}
excelapp.Quit();
break;
default:
Close();
break;
}
}Решение задачи: «Добавление гиперссылки в документ Excel»
textual
Листинг программы
[nick]SeIZVeIZ[/nick],