![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые.
Проблема такая... Создаю книгу exel (экспорт из БД) , далее сохраняю с заданным именем .. Код:
const
Fnn= 'Test';
XLApp.WorkBooks[1].SaveAs(ExtractFilePath(Application.ExeName)+Fnn);
в нужный момент открываю книгу на другой форме в oleconteiner..
OleContainer1.CreateObjectFromFile(ExtractFilePath(Application.ExeName)+Fnn,False);
OleContainer1.DoVerb(ovShow);
затем при закрытии формы удаляю созданный файл ..
procedure TForm23.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
If FileExists(ExtractFilePath(ParamStr(0))+'Test.xlsx') Then Begin
DeleteFile('Test.xlsx');
OleContainer1.Close;
OleContainer1.DestroyObject;
end;
end;
все прекрасно работает что и требовалось.
Но иногда нужно сохранить книгу с другим именем делаю так..
procedure TForm23.N3Click(Sender: TObject);
begin
if SaveDialog1.Execute then begin
OleContainer1.OleObject.SaveAs(SaveDialog1.FileName);
ShowMessage('Отчет сохранён в файл:'#10+SaveDialog1.FileName+'xlsx');
end;
end;тоже все нормально сохраняет. Но теперь код при закрытии формы FormCloseQuery не удаляет первоначально созданный файл Test.xlsx, в чем проблема? Буду благодарен за потраченое на меня время. Последний раз редактировалось Admin, 30.10.2024 в 22:06. |
|
#2
|
|||
|
|||
|
Ну сохрани имя файла при сохранении и используй его для удаления. У тебя в OnCloseQuery жестко прописано имя файла. Кстати и там у тебя ошибка - в услови проверки имени ты проверяешь полное имя, я в команде удаления - короткое.
Еще одна причина, по которой файл может не удаляться - он может быть заблокирован экселем. Тогда надо перед удалением файла также освоболить созданный объект экселя. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Filen (02.11.2024)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Спасиб уважаемый, чтоб без тебя делал. Я не волшебник , я только учусь.. |
|
#4
|
|||
|
|||
|
я извиняюсь, вы тегом "code" не умеете пользоваться?
|