Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.10.2024, 17:01
Filen Filen вне форума
Прохожий
 
Регистрация: 23.05.2024
Сообщения: 6
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Книга 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, 30.10.2024 в 22:06.
Ответить с цитированием
  #2  
Старый 30.10.2024, 22:20
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,051
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну сохрани имя файла при сохранении и используй его для удаления. У тебя в OnCloseQuery жестко прописано имя файла. Кстати и там у тебя ошибка - в услови проверки имени ты проверяешь полное имя, я в команде удаления - короткое.
Еще одна причина, по которой файл может не удаляться - он может быть заблокирован экселем. Тогда надо перед удалением файла также освоболить созданный объект экселя.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:28.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter