![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу получить в Delphi методы листа Excel [Delphi, Windows]
L_Vic © (2005-07-08 11:23:00)Может кто подскажет ?...
Используя СОМ-сервера достучался до ExcelApplication, с трудом удалось открыть документ Excel (метод Open, как оказалось имеет очень много параметров ;), нашел WorkSheets, а вот далее
WS:=...Worksheets.Item['Лист 1'] - возвращает IDispatch
Преобразования типа TExcelWorksheet(WS) выкидывают Exception.
Подскажите, плз., как работать с листами.
L_Vic (2005-07-08 15:40:00) [1]Огромное спасибо за подзказку.
Таким образом все работает.
AbrosimovA (2005-07-08 12:42:00) [2]Забыл указать:
Excel,WorkBook,WorkSheet1,WorkSheet2,Chart1:OleVariant;
AbrosimovA (2005-07-08 12:40:00) [3]Может этот пример поможет тебе:
//Соединение с Excel и настройка страницы
procedure TMainForm.ConnectExcel;
var cls_ExcelObject:string;
Number: integer;
begin
cls_ExcelObject := 'Excel.Application';
//Определение установленной версии Excel
regData := TRegistry.Create;
regData.RootKey := HKEY_CLASSES_ROOT;
try
if regData.OpenKey('\Excel.Application\CurVer', False) then
begin
cls_ExcelObject := regData.ReadString('');
regData.CloseKey;
end
finally
regData.Free;
end;
try
Excel:=CreateOleObject(cls_ExcelObject);
// Отключаем реакцию Excel на события, чтобы ускорить вывод информации
Excel.Application.EnableEvents := false;
if Not FileExists('data.xls') then
begin
Workbook :=Excel.WorkBooks.Add;
WorkBook.SaveAs(ExtractFilePath(Application.ExeName)+'data.xls');
WorkBook.Close;
end;
WorkBook:=Excel.WorkBooks.Open(ExtractFilePath(Application.ExeName)+'data.xls');
Number:=1;
WorkSheet1:=WorkBook.WorkSheets[Number];
WorkSheet1.Name:='Данные';
WorkSheet1.Activate;
WorkSheet1.Cells.Select;
WorkSheet1.Cells.Clear;
WorkSheet1.Cells.ColumnWidth:=9;// Ширина столбца
WorkSheet1.Cells.HorizontalAlignment:= xlCenter;//Выравнивание по правому краю
Number:=2;
WorkSheet2:=WorkBook.WorkSheets[Number];
WorkSheet2.Name:='Графики';
if Worksheet2.ChartObjects.Count>0 then
Worksheet2.ChartObjects.Delete;
finally
WorkSheet1.Cells.Item[1,1].Borders.LineStyle:=xlDouble;//Бордюр- непрерывная линия
WorkSheet1.Cells.Item[1,1].Borders.Weight:= xlMedium;//
WorkSheet1.Cells.Item[1,1].Interior.Color:=RGB(212,212,212);//цвет фона
WorkSheet1.Cells.Item[1,1].Select;
Chart1:=Worksheet2.ChartObjects.Add(1, 1, 400, 250);
end;
end;