Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.01.03;
Скачать: CL | DM;

Вниз

Как экспортировать ListView в Excel?   Найти похожие ветки 

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

Нашел такой код:
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?


 
Dennis I. Komarov ©   (2009-11-12 12:16) [1]

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


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

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


 
Dennis I. Komarov ©   (2009-11-12 12:25) [3]


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

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


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

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


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

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


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

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


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

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


 
kyn66 ©   (2009-11-13 12:56) [8]


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;
...


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

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


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


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


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


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


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

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


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

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


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

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


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

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


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


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


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


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

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


 
kyn66 ©   (2009-11-13 22:11) [16]


> Иван   (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-14 13:40) [17]

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



Страницы: 1 вся ветка

Текущий архив: 2010.01.03;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
15-1250364331
Kerk
2009-08-15 23:25
2010.01.03
Попиарюсь маленько :)


2-1257950877
Alexey
2009-11-11 17:47
2010.01.03
Поток, передача параметра в onTerminated


15-1257377007
Германн
2009-11-05 02:23
2010.01.03
.NET class library


15-1257164173
Serge
2009-11-02 15:16
2010.01.03
Нужен софт для написания хелпа к проге


15-1257003526
stas
2009-10-31 18:38
2010.01.03
пустой exe определяется как троян