Как работать с OLE объектом

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Аватара пользователя
EmeraldMan
постоялец
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород
Контактная информация:

Сообщение EmeraldMan »

Пока еще не возможно присваивать значения свойствам или как это понимать?

Похоже так и есть, у меня такой же косяк...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
Сообщения: 1409
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение Sergei I. Gorelkin »

Может, пока изменение свойств "напрямую" не доделано, оно будет работать путем вызова процедур-сеттеров?
Аватара пользователя
EmeraldMan
постоялец
Сообщения: 149
Зарегистрирован: 16.10.2008 08:41:51
Откуда: Белгород
Контактная информация:

Сообщение EmeraldMan »

Интересно, а будут ли вообще это доделывать?..
В случае с OpenOffice всё работает отлично! Потому как там свойства задаются не присваиванием, а так:

Код: Выделить всё

Document.GetText.CreateTextCursor.SetPropertyValue('CharColor', 255);
Document.GetText.CreateTextCursor.SetPropertyValue('CharShadowed', True);
kosteek
постоялец
Сообщения: 203
Зарегистрирован: 24.07.2008 14:57:09
Откуда: Украина, г.Славянск

Сообщение kosteek »

Дабы не размножать темы, решил продолжить тут.
Проблема в переходе на нужную вкладку

Код: Выделить всё

...
var

  Form1: TForm1;

  MSExcel     : Variant;



const

  ServerName = 'Excel.Application';



implementation



{ TForm1 }



procedure TForm1.Button1Click(Sender: TObject);

var s:widestring;

begin

  try

    MSExcel := CreateOleObject(ServerName);

  except

    WriteLn('Ошибка!');

    Exit;

  end;



  if OpenDialog1.Execute then

     begin

     s:= OpenDialog1.FileName ;

     MSExcel.WorkBooks.Open(s);

     MSExcel.Visible := True;

     try

     MsExcel.ActiveWorkbook.Sheets.Item('FIO').select;
    //----  Вылетает тут
     except on E:Exception do


        begin

        memo1.Lines.Add(e.Message);

         exit;

        end;



     end;

     end;

end;


...


Подскажите как перейти на вкладку?
На Делфи работает так: MsExcel.ActiveWorkbook.Sheets.Item['FIO'].select;
2er0_7011er4nce
незнакомец
Сообщения: 1
Зарегистрирован: 04.04.2013 09:14:26

Сообщение 2er0_7011er4nce »

ViruZ писал(а):Наткнулся на грабли при попытке переноса функций из WordDll - создал тестовый пример - форма с Button, в обработчике OnClick код:

Код: Выделить всё

procedure TForm1.Button1Click(Sender: TObject);
begin
  s:=Utf8ToAnsi('Тест ворда из Лазаруса');
  Wrd := CreateOleObject('Word.Application');

 Wrd.Visible := true;   //<==грабли тут
 Wrd.Documents.Add;
 Wrd.Selection.Font.Size := 20;
 Wrd.Selection.TypeText(s);
 Wrd.ActiveDocument.SaveAs('c:\test.doc');
 Wrd.ActiveDocument.Close;
 Wrd.Quit;
end;


Каким образом можно присвоить значение свойству обьекта? Или пока еще подождать, когда работа с OLE-обьектами будет полностью реализована и продолжать разработку DLL&

Wrd.Visible := true; //<==грабли тут
Попробуй исправить на Wrd.Visible := Visible;
Alex2013
долгожитель
Сообщения: 3211
Зарегистрирован: 03.04.2013 11:59:44

Сообщение Alex2013 »

А зачем OC.SetProperty('Visible',[True]); ?
Почему не OC.Visible := True ; :?:
Аватара пользователя
VirtUX
энтузиаст
Сообщения: 880
Зарегистрирован: 05.02.2008 09:52:19
Откуда: Крым, Алушта

Сообщение VirtUX »

1. Есть-ли возможность использовать OLE для работы с xls-документами без установки на ПК самого M$ Office Excel?
2. Как обрабатывать xls-документы в Linux?
alexey38
долгожитель
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Сообщение alexey38 »

VirtUX писал(а):1. Есть-ли возможность использовать OLE для работы с xls-документами без установки на ПК самого M$ Office Excel?

Нет. Работа с Excel через OLE предназначена как раз для выполнения всех операций именно самим M$ Office Excel. Это не ради правки документов, это как бы реализация макросов не на бэйсике, а на другом языке, например, на паскале.
Если хотите по простому работать с xls-документами без установки на ПК самого M$ Office Excel, то вначале средствами M$ Office Excel сохраните документ в формате XML и дальше просто редактируйте XML. Excel прекрасно работает с документом XML.
Аватара пользователя
vada
энтузиаст
Сообщения: 691
Зарегистрирован: 14.02.2006 12:43:17

Сообщение vada »

У меня OLE работает. XSLT преобразование. Причем, имя файла fName имеет тип Variant. Иначе не работает!!!!!

Код: Выделить всё

function ApplyStylesheet(const XMLFile, XSLFile: String): WideString;
var
  XML, XSL, fName: Variant;
  Html: WideString;
begin
  Html := '';

  XML := CreateOleObject('MSXML2.DOMDocument.6.0');
  XML.ValidateOnParse := True;
  XML.Async := False;

  XSL := CreateOleObject('MSXML2.DOMDocument.6.0');
  XSL.ValidateOnParse := True;
  XSL.Async := False;

  try
    fName := XMLFile;
    XML.load( fName );
  except
    on E: EOleException do
      MessageDlg('Загрузка XML', 'Ошибка чтения файла'#13+UTF8Encode(E.Message), mtError, [mbClose], 0);
  end;

  try
    fName := XSLFile;
    XSL.load( fName );
  except
    on E: EOleException do
      MessageDlg('Загрузка XSL', 'Ошибка чтения файла'#13+UTF8Encode(E.Message), mtError, [mbClose], 0);
  end;

  try
    Html := XML.transformNode(XSL);
  except
    on E: EOleException do
      MessageDlg('XSLT преобразование', 'Ошибка преобразования'#13+ UTF8Encode(E.Message), mtError, [mbClose], 0);
  end;
  Result := Html;
end;
Angel_19
новенький
Сообщения: 37
Зарегистрирован: 24.06.2014 17:29:47

Сообщение Angel_19 »

2er0_7011er4nce писал(а):Wrd.Visible := true; //<==грабли тут

Попробуйте вначале прочитать значение, а потом присваивать. У меня работает.
alex208210
постоялец
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Сообщение alex208210 »

1. Есть-ли возможность использовать OLE для работы с xls-документами без установки на ПК самого M$ Office Excel?

нет, именно поэтому в очередной раз напишу что использовать OLE это неправильно. Грошь цена такой программе, которая использует привязку к офису и не работает без него.
sign
энтузиаст
Сообщения: 1131
Зарегистрирован: 30.08.2009 09:20:53

Сообщение sign »

Ставьте бесплатный офис (например, LibreOffice).
И будете работать с xls-документами без проблем.
И всюду, где нужно, вы можете накатить этот бесплатный офис, не выясняя, есть так ёксель или как.

У меня лично именно так.
Ответить