|
#1
|
|||
|
|||
Книга Excel
Здравствуйте уважаемые.
Проблема такая... Создаю книгу 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, Вчера в 22:06. |
#2
|
|||
|
|||
Ну сохрани имя файла при сохранении и используй его для удаления. У тебя в OnCloseQuery жестко прописано имя файла. Кстати и там у тебя ошибка - в услови проверки имени ты проверяешь полное имя, я в команде удаления - короткое.
Еще одна причина, по которой файл может не удаляться - он может быть заблокирован экселем. Тогда надо перед удалением файла также освоболить созданный объект экселя. |