Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как экспортировать ListView в Excel? [D7, XP]


Иван ©   (2009-11-12 12:00:00) 

Нашел такой код:
procedure ListToExcel(ListView: TListView);
var
 row, i: integer;
 Range, Sheet: VAriant;
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[n].ColumnWidth := 30;
 Range.Columns[n + 1].ColumnWidth := 30;
 Range.Columns.Font.Size := 8;
 Range := Sheet.Range['a1:f1'];
 Range.Font.Size := 15;
 Range.Font.Bold := True;
 Range.Columns.Interior.ColorIndex := 6;
 Range.HorizontalAlignment := 3;
 Sheet.Cells[1, 2] := 'Данные на' + DateToStr(Date); //Заголовок
 Range := Sheet.Range['a2:f2'];
 Range.Font.Size := 10;
 Range.Font.Bold := True;
 Sheet.Cells[2, 1] := 'АА'; //Названия столбцов
 Sheet.Cells[2, n] := 'ББ';
 Sheet.Cells[2, n + 1] := 'вв';
 Row := 3;
 for i := 0 to List.Items.Count - 1 do
 begin
   Sheet.Cells[Row, 1] := ListView.Items.Item[i].Caption;
   Sheet.Cells[Row, 2] := ListView.Items.Item[i].SubItems[n];
   Sheet.Cells[Row, 3] := ListView.Items.Item[i].SubItems[n + 1];
   inc(Row);
 end;
 Screen.Cursor := crDefault;
 if SaveDialog.Execute then
   Excel.WorkBooks[1].SaveAs(exs.FileName); //Сохраняем
 Excel.Visible := True; //Показываем Excel
end;
Ошибки начинаются сразу же при компиляции: неизв. идентиф. Excel и т.д..
Подскажите пожалуйста как правильно сделать экспорт содержимого ListView в Excel?


Иван   (2009-11-14 13:40:00) [1]

Столбцы ListView или Excel? Как организовать послед.перебор с пересылкой значений ячеек ListView в таблицу экселя?


kyn66   (2009-11-13 22:11:00) [2]


> Иван   (13.11.09 17:16) [15]


Ну это ты уже сам должен решить к какому столбцу обращаться.
Columns[0] - 1-й
Columns[1] - 2-й
Columns[2] - 3-й
... и т.д.

см.   http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1274


Иван   (2009-11-13 17:16:00) [3]

>kyn66. Указать начальное значение 0 для переменной n? У меня такое чувство что нехватает формулы для выч.знач. n, только не пойму какой :(


kyn66   (2009-11-13 16:14:00) [4]


> Range.Columns[1].ColumnWidth := 30;  Range.Columns[n].ColumnWidth
> := 30;  Range.Columns[n + 1].ColumnWidth := 30;


nнигде не присвоено никакого значения!


Bel   (2009-11-13 16:08:00) [5]

Переменную мало описать. Неплохо было бы еще её инициализировать и присваивать какие-то значения по ходу алгоритма.


Иван   (2009-11-13 15:52:00) [6]

P.S. Процедуре экспорта передаю имя заполненного данными списка:ListToExcel(Form1.ListView3).


Иван   (2009-11-13 15:32:00) [7]

Указал тип, исправил мелкие ошибки в коде, теперь компилится отлично но при попытке экспорта в программе вылетает ошибка "Исключение класса EOleException OLE Error 800A03EC на строке:  Range.Columns[n].ColumnWidth := 30; Переменную n была не описана, указал как Integer. В чем еще могут быть траблы?


Иван   (2009-11-13 15:17:00) [8]

Спасибо большое за помощь kyn66 и Дмитрий!!!


Дмитрий Белькевич   (2009-11-13 13:22:00) [9]

Компьютеру стоит верить. Если он пишет, что ему excel неизвестен - то значит так оно есть.


> Я думал в примере переименованы имена компонентов Экселя.


Для того, что бы в паскале обратиться к любой переменной она должна быть где-то описана (указан её тип, [5]). Переменная в твоём коде нигде не описана, что тебе компьютер честно и написал.


> Чесно говоря я незнаю каким типом. Может посоветуешь?


Ищи в гугле, искать по ключевикам CreateOleObject Excel.Application. Наверняка еще несколько десятков примеров будет.


kyn66   (2009-11-13 12:56:00) [10]


var
row, i: integer;
Range, Sheet: VAriant;
Ex : Variant;
begin
try
//   Excel := CreateOleObject('Excel.Application');
  Ex := CreateOleObject('Excel.Application');
except
  raise Exception.Create('Невозможно поключиться к серверу Excel');
end;
...


Dennis I. Komarov   (2009-11-13 12:23:00) [11]

И чем же тебе помочь?


Иван   (2009-11-13 12:16:00) [12]

Чесно говоря я незнаю каким типом. Может посоветуешь? Я думал в примере переименованы имена компонентов Экселя..


Dennis I. Komarov   (2009-11-13 11:25:00) [13]

Описать соответствующим типом...


Иван   (2009-11-13 10:14:00) [14]

И че ему присвоить? ExelAplication?


Dennis I. Komarov   (2009-11-12 12:25:00) [15]


> неизв. идентиф. Excel

начни с этого... он же не дурак, он знает что ему не нравиться


Иван   (2009-11-12 12:21:00) [16]

>Dennis I. Komarov. Кому веришь? Подскажи пожалуйста как правильно сделать экспорт содержимого ListView в Excel?


Dennis I. Komarov   (2009-11-12 12:16:00) [17]

Я бы тоже так ругался судя по этому отрывку. Да и вообще я ему верю...


Наверх

Титульная страница Поиск, карта сайта Написать письмо