Добавление гиперссылки в документ 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],
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д