Excel

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

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

Excel

Сообщение SeventhSon » 13.05.2011 18:23:21

Подскажите почему OLE выдаёт ошибку в строке for i:=1 to 1 do Excel.Range('A'+IntToStr(i)):='qq';
если вписать A1 то всё нормально а программно адресовать ячейку не получается:(

procedure TForm1.Button1Click(Sender: TObject);
var
path: string;
Excel, Sheet: OleVariant;
i:integer;
begin
path:='f:\1.xls';
Excel:=CreateOLEObject('Excel.Application');
try
Excel.WorkBooks.Open(WideString(UTF8Decode(path)));
Excel.Visible:=true;
for i:=1 to 1 do Excel.Range('A'+IntToStr(i)):='qq';
except
on E:EOleException do
ShowMessage(UTF8Encode(E.Message));
end;
end;
SeventhSon
новенький
 
Сообщения: 56
Зарегистрирован: 17.02.2009 01:57:17

Re: Excel

Сообщение Ism » 13.05.2011 18:36:48

Возможно дело в том, что работает с указателями на память.

Попробуйте так

temps:='A'+IntToStr(i);
Excel.Range(temps):='qq';

тогда Excel.Range будет работать с готовой строкой в памяти
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Excel

Сообщение SeventhSon » 13.05.2011 18:49:59

пробовал.не получается.какого типа должна быть переменная temps?
SeventhSon
новенький
 
Сообщения: 56
Зарегистрирован: 17.02.2009 01:57:17

Re: Excel

Сообщение Ism » 13.05.2011 19:25:36

может Variant

или вообще указатель, смотри описание Excel.Range
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Excel

Сообщение SeventhSon » 13.05.2011 19:28:10

заработало.вот так надо:

Код: Выделить всё
    for i:=1 to 65535 do
      begin
      Excel.Range(WideString(UTF8Decode('A'+IntToStr(i)))):='qq';
      end;                                                                   


теперь подскажите(а то будет как в прошлый раз!!) как в шаблон отчёта экселя вставлять строки.ну т.е. есть шаблон,в нём шапка и подпись.как в середину вставить своё,заранее не известное количество строк с данными?

нашёл кое-что.вставляется строка вот так Excel.Selection.EntireRow.Insert;
но как перед этим выделить строку?
ни Excel.Rows('2:2').Select; ни Excel.Range('C1').Select; не работает:(
SeventhSon
новенький
 
Сообщения: 56
Зарегистрирован: 17.02.2009 01:57:17

Re: Excel

Сообщение Kitayets » 18.05.2011 10:53:40

SeventhSon
теперь подскажите(а то будет как в прошлый раз!!) как в шаблон отчёта экселя вставлять строки.ну т.е. есть шаблон,в нём шапка и подпись.как в середину вставить своё,заранее не известное количество строк с данными?


может просто вставлять подпись из программы после вставки "середины"?

что касается:
Excel.Selection.EntireRow.Insert;

то Selection - это Range

попробуй:
Range('C1').EntireRow.Insert;
Kitayets
постоялец
 
Сообщения: 171
Зарегистрирован: 05.05.2010 21:15:24


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

Рейтинг@Mail.ru
cron