![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как экспортировать 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]Я бы тоже так ругался судя по этому отрывку. Да и вообще я ему верю...