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