Превратить текст в гиперссылку в excel

Тема в разделе "Delphi - Компоненты", создана пользователем Shouldercannon, 27 мар 2015.

  1. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Доброго времени суток!
    Передаю содержимое ListView в Excel
    Код (Delphi):
    procedure ListToExcel(ListView: TListView);
    var
      i, n: Integer;
      Range, Sheet: VAriant;
      Excel: OleVariant;
    begin
      try
        Excel := CreateOleObject('Excel.Application');
      except
        raise Exception.Create('Невозможно поключиться к серверу Excel');
      end;
     
     
     
     
      Screen.Cursor := crHourGlass;
      Excel.SheetsInNewWorkBook := 1;
      Excel.WorkBooks.Add;
      Sheet := Excel.Workbooks[1].Sheets[1];
      Range := Sheet.Columns;
      Range.Columns[1].ColumnWidth := 30;
      Range.Columns[2].ColumnWidth := 30;
      Range.Columns[3].ColumnWidth := 30;
     
     
     
     
      Range.Rows[1].Font.Bold := True;
     
     
     
     
      for i := 0 to ListView.Columns.Count - 1 do
      begin
        Sheet.Cells[1, i + 1] := ListView.Column[i].Caption;
      end;
     
     
     
     
      for i := 0 to ListView.Items.Count - 1 do
      begin
        Sheet.Cells[i + 2, 1] := ListView.Items[i].Caption;
        for n := 1 to ListView.Columns.Count - 1 do
        begin
          Sheet.Cells[i + 2, n + 1] := ListView.Items[i].SubItems.Strings[n - 1];
        end;
      end;
     
     
     
     
      Screen.Cursor := crDefault;
      Excel.Visible := True; // Показываем Excel
    end;
     
    Потребовалось превратить содержимое второго столбца Excel в гиперссылки. Как это можно сделать?
     
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    Какие данные идут для второго столбца ?
     
  3. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    18
    в целевую ячейку надо добавить hyperlink в коллекцию линков
    примерно так
    Код (Delphi):

    var r: Range;
    begin
    r:= XLSheet.Range['A1','A1'];
    r.Hyperlinks.Add( r,'','http://localhost/0.html',EmptyParam,'ТЫЦ');
    end;
    ps: убогий тут редактор кода
     
  4. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Код (Delphi):

    var
    i, n: Integer;
    Range, Sheet: VAriant;
    Excel: OleVariant;
    begin
    try
    Excel := CreateOleObject('Excel.Application');
    except
    raise Exception.Create('Невозможно подключиться к серверу Excel');
    end;
    Screen.Cursor := crHourGlass;
    Excel.SheetsInNewWorkBook := 1;
    Excel.WorkBooks.Add;
    Sheet := Excel.Workbooks[1].Sheets[1];
    Range := Sheet.Columns;
    Range.Columns[1].ColumnWidth := 30;
    Range.Columns[2].ColumnWidth := 30;
    Range.Columns[3].ColumnWidth := 30;
    Range.Rows[1].Font.Bold := True;
    for i := 0 to ListView.Columns.Count - 1 do
    begin
    Sheet.Cells[1, i + 1] := ListView.Column[i].Caption; // Названия столбцов
    end;
    for i := 0 to ListView.Items.Count - 1 do
    begin
    Sheet.Cells[i + 2, 1] := ListView.Items[i].Caption; // Заполнение первого столбца
    for n := 1 to ListView.Columns.Count - 1 do
    begin
    Sheet.Cells[i + 2, n + 1] := ListView.Items[i].SubItems.Strings[n - 1]; // Заполнение остальных столбцов
    end;
    end;
    for i := 0 to ListView.Items.Count - 1 do
    begin
    Range := Sheet.Range[Format('B%d', [i + 2]), Format('B%d', [i + 2])]; // Указываем диапазон
    Range.Hyperlinks.Add(Range, ListView.Items[i].SubItems[0], EmptyParam, EmptyParam, EmptyParam); // Превращаем в гиперссылку
    end;
    Screen.Cursor := crDefault;
    Excel.Visible := True; // Показываем Excel
    end;
     
    :)
     
    #5 Shouldercannon, 27 мар 2015
    Последнее редактирование модератором: 27 мар 2015
Загрузка...

Поделиться этой страницей