Witam
Mam 2 problemy dotyczące współpracy Excela z Lazarusem za pośrednictwem OLE. Jako że długotrwałe szukanie odpowiedzi w google nie dało satysfakcjonującego rezultatu, pozwolę sobie zadać pytania tutaj.
Pierwszy z nich dotyczy kodowania polskich liter i ich wyświetlania w Excelu. Lazarus stosuje kodowanie UTF-8, Office - windows-1250. W przypadku zwykłego przesłania stringa do Offica w miejscu polskich literek pojawiają się oczywiście krzaczki. Niestety, niezależnie od tego czy próbuję konwertować stringa na windows1250, czy też deklaruję zmienną jako widestring, albo w takiej postaci pozyskuję (AsWidestring) z bazy danych i przekazuję do Excela – w Excelu cały czas uzyskuję krzaczki. Próbowałem także funkcję MultiByteToWideChar ( przykład funkcji StringToWideString z tego forum) – bez powodzenia.
var
excel : olevariant;
begin
excel:=CreateOleObject('Excel.Application');
excel.visible:=true;
excel.WorkBooks.Add;
excel.Cells[1,1].Value:='ąęćśż';
excel.Cells[1,2].Value:=Utf8ToAnsi('ąęćśż');
excel.Cells[1,3].Value:=UTF8ToCP1250('ąęćśż'); end;
end;
I drugi problem. Próbuję przekazać zmienną do Excela. Pojawia się komunikat:
EOleSysError "W magazynie brak miejsca dla wykonania tej operacji".
var
excel : olevariant;
S: String;
begin
excel:=CreateOleObject('Excel.Application');
excel.visible:=true;
excel.WorkBooks.Add;
S:='ąęćśż';
excel.Cells[1,1].Value:=S;
end;
Pytanie uzupełniające:
- Co robię źle, że uzyskuję w Excelu krzaczki zamiast polskich liter oraz nie mogę przesłać zmiennej do Excela.