Работа с отчетом

Avatar
  • обновлен
Пытался сделать запись в файл на основании Ваших примеров "Работа с объектом Excel. Примеры не работают

var
D,i:Integer;
OpenDialog1: TOpenDialog;

begin

OpenDialog1:=TOpenDialog.Create(nil);
try
OpenDialog1.Filter:='Excel\*.xlsx';
OpenDialog1.InitialDir:='C:\slProject';
if OpenDialog1.Execute then
begin
if Excel.OpenTemplate(OpenDialog1.FileName)=1 then
i:=1;
if Excel.OpenTemplate(OpenDialog1.FileName)= 2 then
i:=2;
if Excel.OpenTemplate(OpenDialog1.FileName)=3 then
i:=3;
if Excel.OpenTemplate(OpenDialog1.FileName)= 9 then
i:=9;
if Excel.OpenTemplate(OpenDialog1.FileName)= 0 then
i:=0;

if Excel.OpenTemplate(OpenDialog1.FileName)<>0 then
begin
i:=5;
Exit;
end;
Excel.Cell['A1']:=100;
D:=Excel.Cell['B2'];

Excel.Show;
Excel.Save('C:\slProject1\Report');
end;

OpenDialog1.Free;
finally
end;
end.
что я не так делаю????
Avatar
SIMP Tech (Сергей)
Ок. Другой документ Excel открывает? Версия ОС, версия Excel.
Avatar
Михаил
i=25232080
Avatar
Михаил
Убрал Excel.Show;, то же самое i=5? документ не изменяется.
Avatar
SIMP Tech (Сергей)
да и ещё не заметил момент:

вот такая последовательность команд работать не будет!

Excel.Show;
Excel.Save('C:\slProject1\Report.xls');

После выполнения методов Show, Close – скрипт теряет контроль над открытым
документом Excel, и последующие команды игнорируются.
Avatar
SIMP Tech (Сергей)
Пробовал те же я…ца.

хотя исходя из кода если будет ошибка то результат всегда будет 5. Немного переделаем скрипт:

var D ,i:Integer; OpenDialog1: TOpenDialog; res: integer; begin OpenDialog1 := TOpenDialog.Create(nil); try OpenDialog1.Filter:='Excel|*.xlsx'; OpenDialog1.InitialDir:='C:\slProject'; if OpenDialog1.Execute then begin i := Excel.OpenTemplate(OpenDialog1.FileName); if i <> 0 then Exit; Excel.Cell['A1'] := 100; D := Excel.Cell['B2']; Excel.Show; Excel.Save('C:\slProject1\Report.xls'); end; finally OpenDialog1.Free; end; end.
Avatar
Михаил
Пробовал те же я…ца.
Avatar
SIMP Tech (Сергей)
При выполнении скрипта, он выходит на выбор файла, я выбираю файл, и все…. По тексту моего примера, я проверял что за ошибку выдает метод OpenTemplate, перебором всех ошибок. Так он выдает какую-то другую ошибку у меня i всегда 5.

Попробуйте для теста мой вариант.
Avatar
Михаил
При выполнении скрипта, он выходит на выбор файла, я выбираю файл, и все…. По тексту моего примера, я проверял что за ошибку выдает метод OpenTemplate, перебором всех ошибок. Так он выдает какую-то другую ошибку у меня i всегда 5.
Avatar
SIMP Tech (Сергей)
День добрый.

var D ,i:Integer; OpenDialog1: TOpenDialog; res: integer; begin OpenDialog1 := TOpenDialog.Create(nil); try OpenDialog1.Filter:='Excel|*.xlsx'; OpenDialog1.InitialDir:='C:\slProject'; if OpenDialog1.Execute then begin i := Excel.OpenTemplate(OpenDialog1.FileName); if i <> 0 then begin i:=5; Exit; end; Excel.Cell['A1'] := 100; D := Excel.Cell['B2']; Excel.Show; Excel.Save('C:\slProject1\Report.xls'); end; finally OpenDialog1.Free; end; end.
Вот такой вариант будет более правильный. Что именно у Вас не работало?