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

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 (Сергей)
День добрый.

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.
Вот такой вариант будет более правильный. Что именно у Вас не работало?
Avatar
Михаил
При выполнении скрипта, он выходит на выбор файла, я выбираю файл, и все…. По тексту моего примера, я проверял что за ошибку выдает метод OpenTemplate, перебором всех ошибок. Так он выдает какую-то другую ошибку у меня i всегда 5.
Avatar
SIMP Tech (Сергей)
При выполнении скрипта, он выходит на выбор файла, я выбираю файл, и все…. По тексту моего примера, я проверял что за ошибку выдает метод OpenTemplate, перебором всех ошибок. Так он выдает какую-то другую ошибку у меня i всегда 5.

Попробуйте для теста мой вариант.
Avatar
Михаил
Пробовал те же я…ца.
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
SIMP Tech (Сергей)
да и ещё не заметил момент:

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

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

После выполнения методов Show, Close – скрипт теряет контроль над открытым
документом Excel, и последующие команды игнорируются.
Avatar
Михаил
Убрал Excel.Show;, то же самое i=5? документ не изменяется.
Avatar
Михаил
i=25232080
Avatar
SIMP Tech (Сергей)
Ок. Другой документ Excel открывает? Версия ОС, версия Excel.
Avatar
SIMP Tech (Сергей)
Ок. Другой документ Excel открывает? Версия ОС, версия Excel.