Добавление гиперссылки в документ Excel - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Приложение на C# генерирует документ Excel, в который выводятся UNC пути ко всем файлам, расположенным, например, в папке d:\Advanced Installer\ . Мне нужно вместо путей выводить кликабельные гиперссылки на файлы, расположенные по данным путям: Но если я перехожу по каждой из этих ссылок, выдает ошибку: При нажатии на кнопку "Сгенерировать файл Excel" такой код:
Листинг программы
  1. listBox1.Items.Clear();
  2. GetFiles(dir1);
  3. button_Click(sender, e);
  4. MessageBox.Show("Файл Excel сгенерирован!");
Код GetFiles():
Листинг программы
  1. public void GetFiles(string dir)
  2. {
  3. try
  4. {
  5. System.IO.DirectoryInfo DirectoryInfo = new System.IO.DirectoryInfo(dir);
  6. foreach (System.IO.FileInfo FileInfo in DirectoryInfo.GetFiles())
  7. {
  8. //Здесь мы выводим информацию о полученном файле
  9. listBox1.Items.Add(FileInfo.FullName);
  10. }
  11. foreach (System.IO.DirectoryInfo Dir in DirectoryInfo.GetDirectories())
  12. {
  13. try { GetFiles(Dir.FullName); }
  14. catch { }
  15. }
  16. lCount = listBox1.Items.Count;
  17. }
  18. catch (UnauthorizedAccessException ex)
  19. {
  20. MessageBox.Show(ex.ToString());
  21. Log.Write(ex);
  22. }
  23. }
Код button_Click():
Листинг программы
  1. private void button_Click(object sender, EventArgs e)
  2. {
  3. int i = Convert.ToInt32(((Button)(sender)).Tag);
  4. switch (i)
  5. {
  6. case 1:
  7. excelapp = new Excel.Application(); // запуск Excel
  8. excelapp.Visible = true;
  9. // создание рабочей книги из 3-х листов:
  10. excelapp.SheetsInNewWorkbook = 3; // Свойство SheetsInNewWorkbook возвращает или устанавливает количество листов, автоматически помещаемых Excel в новые рабочие книги.
  11. excelapp.Workbooks.Add(Type.Missing);
  12. //Получаем набор ссылок на объекты Workbook (на созданные книги)
  13. excelappworkbooks = excelapp.Workbooks;
  14. //Получаем ссылку на книгу 1 - нумерация от 1
  15. excelappworkbook = excelappworkbooks[1];
  16. //Ссылку можно получить и так, но тогда надо знать имена книг,
  17. //причем, после сохранения - знать расширение файла
  18. //excelappworkbook=excelappworkbooks["Книга 1"];
  19. //Запроса на сохранение для книги не должно быть
  20. //Получаем массив ссылок на листы выбранной книги
  21. excelsheets = excelappworkbook.Worksheets;
  22. excelappworkbook.Saved = true;
  23. //Получаем ссылку на лист 1
  24. excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
  25. //Делаем третий лист активным
  26. excelworksheet.Activate();
  27. //Вывод в ячейки используя номер строки и столбца Cells[строка, столбец]
  28. for (int m = 1; m <= lCount; m++)
  29. {
  30. excelcells = (Excel.Range)excelworksheet.Cells[m, 1];
  31. //Выводим координаты ячеек
  32. excelcells.Value2 = listBox1.Items[m - 1];
  33. /*
  34. excelcells.Font.Size = 20;
  35. excelcells.Font.Italic = true;
  36. excelcells.Font.Bold = true;
  37. */
  38. Excel.Range rangeToHoldHyperlink = (Excel.Range)excelworksheet.Cells[m, 1];
  39. string hyperlinkTargetAddress = excelcells.Value2.ToString();
  40. excelworksheet.Hyperlinks.Add
  41. (rangeToHoldHyperlink,
  42. string.Empty,
  43. hyperlinkTargetAddress,
  44. "Screen Tip Text",
  45. hyperlinkTargetAddress);
  46. }
  47. excelapp.Columns.AutoFit(); // выровнять ширину колонок по самой широкой записи
  48. break;
  49. case 2:
  50. //Устанавливаем формат
  51. excelapp.DefaultSaveFormat = Excel.XlFileFormat.xlWorkbookDefault;
  52. try
  53. {
  54. if (File.Exists(excelapp.DefaultFilePath)) // если файл по пути по умолчанию существует
  55. {
  56. //Будем спрашивать разрешение на запись поверх существующего документа
  57. excelapp.DisplayAlerts = true; // При значении свойства DisplayAlerts=true Excel будет спрашивать - записать ли сохраняемый документ поверх существующего, при значении false - нет.
  58. //Сохраняем результат
  59. excelappworkbooks = excelapp.Workbooks;
  60. excelappworkbook = excelappworkbooks[1];
  61. excelappworkbook.SaveAs(Type.Missing, //object Filename
  62. Type.Missing, //object FileFormat
  63. Type.Missing, //object Password
  64. Type.Missing, //object WriteResPassword
  65. Type.Missing, //object ReadOnlyRecommended
  66. Type.Missing, //object CreateBackup
  67. Excel.XlSaveAsAccessMode.xlNoChange,//XlSaveAsAccessMode AccessMode
  68. Type.Missing, //object ConflictResolution
  69. Type.Missing, //object AddToMru
  70. Type.Missing, //object TextCodepage
  71. Type.Missing, //object TextVisualLayout
  72. Type.Missing); //object Local
  73. }
  74. }
  75. catch (COMException ex)
  76. {
  77. MessageBox.Show(ex.ToString());
  78. Log.Write(ex);
  79. }
  80. excelapp.Quit();
  81. break;
  82. default:
  83. Close();
  84. break;
  85. }
  86. }
Подскажите, где ошибка?

Решение задачи: «Добавление гиперссылки в документ Excel»

textual
Листинг программы
  1. [nick]SeIZVeIZ[/nick],

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы