Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2013, 18:06   #1
SashOkSerg
mother russia
Пользователь
 
Аватар для SashOkSerg
 
Регистрация: 09.11.2012
Сообщений: 25
По умолчанию Сохранить файл(ы) в папку

Возникла необходимость сохранения отчетов на каждый рабочий день ...
например: нажимаю на кнопку отчёт и создаётся на диске д папка с названием Отчёт 14.09.2013 и туда помещаются некие документы....

Стараюсь сделать это следующими шагами:

Создаю папку:

Код:
MkDir("d:\\Отчёт " + DateToStr(Date()));
т.е. на диске Д создалась папка такого вида: Отчёт 14.09.2013

Далее мне необходимо сохранить в эту же папку некоторые файлы, например Excel ... Создаю новый документ excel и передаю в него данные :

Код:
Variant App, Books, Book, Sheets, Sheet, Cells, Cell;
 try
	{
 App=CreateOleObject("Excel.Application");
	}
  catch (...)
	{
		ShowMessage("Не могу запустить сервер Microsoft Excel. Продолжение невозможно.");
		return;
	}
 App.OlePropertySet("Visible",true);  //делаем Excel видимым
	Books=App.OlePropertyGet("Workbooks");
	App.OlePropertySet("SheetsInNewWorkbook",3); //создаём 3 листа в книге
	Books.OleProcedure("Add");
	Book=Books.OlePropertyGet("Item",1);
	Sheets=Book.OlePropertyGet("Worksheets");
	Sheet=Sheets.OlePropertyGet("Item",1);  //ссылка на первый лист в книге
	Sheet.OleProcedure("Activate");

//сюда передаются данные с неких таблиц ... этот кусок кода пропускаю....

...

AnsiString NameFile = "base.xlsx";

App.OlePropertySet("DisplayAlerts",false);
	App.OlePropertyGet("Workbooks").
		  OlePropertyGet("Item",1).
		  OleProcedure("SaveAs", AnsiString( ExtractFilePath(Application->ExeName) + "путь//папка" + NameFile).c_str());
   App.OleProcedure("Quit");
Соответственно как мне написать / дописать код чтобы этот файл под некоторым именем сохранился в эту же папку Отчёт 14.09.2013 и.т.д. когда в следующий раз нажму кнопку - на новый день в новую папку!
Мне все равно что вы обо мне думаете, я о вас не думаю вообще.
SashOkSerg вне форума Ответить с цитированием
Старый 14.09.2013, 18:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, если то, что Вы написали, у Вас работает, тогда попробуйте так:
(скомпоновал то, что у Вас есть)
Код:
AnsiString NameDir = "d:\\Отчёт " + DateToStr(Date());

....

App.OlePropertySet("DisplayAlerts",false);
	App.OlePropertyGet("Workbooks").
		  OlePropertyGet("Item",1).
		  OleProcedure("SaveAs", AnsiString(NameDir + "\\" + NameFile).c_str());
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.09.2013, 18:50   #3
SashOkSerg
mother russia
Пользователь
 
Аватар для SashOkSerg
 
Регистрация: 09.11.2012
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
ну, если то, что Вы написали, у Вас работает, тогда попробуйте так:
(скомпоновал то, что у Вас есть)
Код:
AnsiString NameDir = "d:\\Отчёт " + DateToStr(Date());

....

App.OlePropertySet("DisplayAlerts",false);
	App.OlePropertyGet("Workbooks").
		  OlePropertyGet("Item",1).
		  OleProcedure("SaveAs", AnsiString(NameDir + "\\" + NameFile).c_str());
То что я написал у меня не работает, открывается документ, передаются данные и при закрывании сразу ошибка... Пробовал без передачи данных... также ошибка...

Пробовал Ваш код, но без передачи данных с таблиц,... Документ открывается но не сохраняется ... выскакивает та самая ошибка:

Мне все равно что вы обо мне думаете, я о вас не думаю вообще.
SashOkSerg вне форума Ответить с цитированием
Старый 14.09.2013, 19:11   #4
SashOkSerg
mother russia
Пользователь
 
Аватар для SashOkSerg
 
Регистрация: 09.11.2012
Сообщений: 25
По умолчанию

Нашёл эту ошибку... в строчке :

Код:
OleProcedure("SaveAs", AnsiString(NameDir + "\\" + NameFile).c_str());
Если убрать :
Код:
AnsiString(NameDir + "\\" + NameFile).c_str();
и оставить просто:

Код:
OleProcedure("SaveAs");
то код работает и сохраняет в мои документы под стандартным именем файл Книга1.xlsx !..
Мне все равно что вы обо мне думаете, я о вас не думаю вообще.
SashOkSerg вне форума Ответить с цитированием
Старый 14.09.2013, 19:43   #5
SashOkSerg
mother russia
Пользователь
 
Аватар для SashOkSerg
 
Регистрация: 09.11.2012
Сообщений: 25
По умолчанию

Вопрос решён:

Код:
App.OlePropertyGet("WorkBooks",1).OleProcedure("SaveAs", WideString(AnsiString(NameDir + "\\" + NameFile).c_str()));
Мне все равно что вы обо мне думаете, я о вас не думаю вообще.
SashOkSerg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сохранить изображений в папку erebakan Общие вопросы Delphi 1 31.10.2012 21:27
где сохранить папку с файлами Devostator Общие вопросы Delphi 4 16.03.2012 23:29
Сохранить текстовый файл в указанную папку с заданным именем (Delphi) winwirus Помощь студентам 3 26.09.2011 20:14
Как сохранить файл из IE в нужную папку GApe Общие вопросы Delphi 4 28.01.2010 11:26
Как сохранить файл заранее указывая папку? highklass Общие вопросы Delphi 2 09.06.2008 10:58