Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.01.2012, 15:11
dwp_prof dwp_prof вне форума
Прохожий
 
Регистрация: 16.01.2012
Сообщения: 5
Репутация: 10
По умолчанию Сохранение из ListView в таблицу Excel

Подскажите как реализовать сохранение из ListView в *.xls таблицу

Зарание спасибо
Ответить с цитированием
  #2  
Старый 17.01.2012, 16:29
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Собственнно ничего особо сложного:
Код:
Uses ComObj;

procedure TForm15.Button1Click(Sender: TObject);
Var
  Row, Col: Integer;
  Excel, WorkBook, WorkSheet: Variant;
begin
 if ListView1.ViewStyle <> vsReport then Exit;
 if not Assigned(ListView1.Columns) then Exit;

 Excel := CreateOLEObject('Excel.Application');
 Excel.Visible := True;
 WorkBook := Excel.WorkBooks.Add;
 WorkSheet := WorkBook.WorkSheets[1];

 for Col := 0 to ListView1.Columns.Count - 1
 do WorkSheet.Range[Chr(65 + Col) + '1'] := ListView1.Columns[Col].Caption;

 for Row := 0 to ListView1.Items.Count - 1
 do for Col := 0 to ListView1.Columns.Count - 1
    do if Col = 0
       then WorkSheet.Range[Chr(65 + Col) + IntToStr(Row + 2)] := ListView1.Items[Row].Caption
       else WorkSheet.Range[Chr(65 + Col) + IntToStr(Row + 2)] := Format('R%dC%d',[Row,Col]);
 Excel := UnAssigned;
end;

procedure TForm15.FormCreate(Sender: TObject);
Var
  Row, Col: Integer;
begin
 for Row := 0 to 5
 do begin
    ListView1.AddItem('', nil);
    for Col := 0 to ListView1.Columns.Count - 1
    do if Col = 0
       then ListView1.Items[Row].Caption := Format('R%dC%d',[Row,Col])
       else WorkSheet.Range[Chr(65 + Col) + IntToStr(Row + 2)] := ListView1.Items[Row].SubItems.Strings[Col - 1];
    end;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 17.01.2012 в 16:39.
Ответить с цитированием
Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение:
dwp_prof (17.01.2012)
  #3  
Старый 17.01.2012, 18:23
dwp_prof dwp_prof вне форума
Прохожий
 
Регистрация: 16.01.2012
Сообщения: 5
Репутация: 10
По умолчанию

Спасибо, сейчас попробую
Ответить с цитированием
  #4  
Старый 17.01.2012, 19:24
dwp_prof dwp_prof вне форума
Прохожий
 
Регистрация: 16.01.2012
Сообщения: 5
Репутация: 10
По умолчанию

А не затруднит вас прикрепить пояснения к каждому циклу. Просто так скопировать могу, но лучше бы и разобраться что к чему))))
Ответить с цитированием
  #5  
Старый 17.01.2012, 19:54
dwp_prof dwp_prof вне форума
Прохожий
 
Регистрация: 16.01.2012
Сообщения: 5
Репутация: 10
По умолчанию

Ругается на строчку

Цитата:
else WorkSheet.Range[Chr(65 + Col) + IntToStr(Row + 2)] := ListView1.Items[Row].SubItems.Strings[Col - 1];

Причем без FormCreate все прекрасно работает.. Объясните зачем эта процедура

Последний раз редактировалось dwp_prof, 17.01.2012 в 20:35.
Ответить с цитированием
  #6  
Старый 17.01.2012, 21:42
dwp_prof dwp_prof вне форума
Прохожий
 
Регистрация: 16.01.2012
Сообщения: 5
Репутация: 10
По умолчанию

Ой всё нашел урок на сайте ващем.. щас прочту))
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:38.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025