Работа с отчетом
Пытался сделать запись в файл на основании Ваших примеров "Работа с объектом 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.
что я не так делаю????
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.
что я не так делаю????
вот такая последовательность команд работать не будет!
Excel.Show;
Excel.Save('C:\slProject1\Report.xls');
После выполнения методов Show, Close – скрипт теряет контроль над открытым
документом Excel, и последующие команды игнорируются.
хотя исходя из кода если будет ошибка то результат всегда будет 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.
Попробуйте для теста мой вариант.
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.
Вот такой вариант будет более правильный. Что именно у Вас не работало?