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

Вниз

Не могу получить в Delphi методы листа Excel   Найти похожие ветки 

 
L_Vic ©   (2005-07-08 11:23) [0]

Может кто  подскажет ?...
Используя СОМ-сервера достучался до ExcelApplication, с трудом удалось открыть документ Excel (метод Open, как оказалось имеет очень много параметров ;), нашел WorkSheets, а вот далее

WS:=...Worksheets.Item["Лист 1"] - возвращает IDispatch
Преобразования типа TExcelWorksheet(WS) выкидывают Exception.

Подскажите, плз., как работать с листами.


 
AbrosimovA   (2005-07-08 12:40) [1]

Может этот пример поможет тебе:

//Соединение с 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;


 
AbrosimovA   (2005-07-08 12:42) [2]

Забыл указать:

Excel,WorkBook,WorkSheet1,WorkSheet2,Chart1:OleVariant;


 
L_Vic ©   (2005-07-08 15:40) [3]

Огромное спасибо за подзказку.
Таким образом все работает.



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

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

Наверх




Память: 0.45 MB
Время: 0.013 c
2-1149014525
Blari
2006-05-30 22:42
2006.06.18
Перетаскивание в ListBox


1-1147201373
Leonardo
2006-05-09 23:02
2006.06.18
Своя рамка в ListBox


2-1149247422
XTD
2006-06-02 15:23
2006.06.18
Объясните как написать функцию с возвратом ?


2-1149227834
kvi
2006-06-02 09:57
2006.06.18
код завершения программы


2-1148826660
Галинка
2006-05-28 18:31
2006.06.18
Вопрос к TUser и остальным знатокам ООП (навеяно соседней веткой)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский