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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.10.2017, 13:12
lx2004nt lx2004nt вне форума
Прохожий
 
Регистрация: 21.10.2017
Сообщения: 4
Версия Delphi: delphi 10.1 Ber
Репутация: 10
Радость Выгрузка отчета в word и excel

Добрый день, подскажите пожалуйста. Есть некий алгоритм, от подставленных в него чисел он дает некий результат. Его надо записать в ворд и эксель на выбор, с сохранением фаила в определенную директорию с именем фаила ФИО клиента. Как это лучше сделать? Вот кусок кода, как нормально записать и красиво?

Эксель
Код:
begin
  SaveDialog1.DefaultExt := '.rtf';
  SaveDialog1.Filter := 'EXCEL files|*.xls';
  if SaveDialog1.Execute then
   begin
    // RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    //Excel.Visible := True;
    AssignFile(F,saveDialog1.FileName);
    Rewrite(F);
     Writeln(F, 'xyz');
     Excel.Range['b2']:='Привет!';
     CloseFile(F);
     ShowMessage('Файл '+SaveDialog1.FileName+' сохранён. ');
  end;
end;

как записать во вторую ячейку? как подвинуть все крассиво что бы можно было на листе а4 распечатать данные?

Ворд

Код:
begin
  SaveDialog1.DefaultExt := '.doc';
  SaveDialog1.Filter := 'WORD files|*.doc';
  if SaveDialog1.Execute then
   begin
    // RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    AssignFile(F,saveDialog1.FileName);
    Rewrite(F);
    Writeln(F, 'xyz');
     CloseFile(F);
     ShowMessage('Файл '+SaveDialog1.FileName+' сохранён. ');
  end;
end;

Посоветуйте лучший вариант Спасибо за помощь заранее.
Ответить с цитированием
  #2  
Старый 21.10.2017, 21:09
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

В зависимости от расширения файла. В фильтр оба типа добавить.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 22.10.2017, 01:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, данные примеры будут выдавать бред и ошибки.
Если уж мы говорим о красивом выводе, то действовать надо примерно так (посностью код писать лень):
1. Открываем диалог сохранения для выбора пользователем файла. В диалоге в фильтре оба типа файла.
2. Если пользователь выбрал файл, то
3. получаем расширение выбранного файла (для определения куда экспортировать)
4. Копируем из папки программы ЗАРАНЕЕ отдизайненый шаблон (ворд или эксель по типу расширения)
5. Вызываем процедуру вывода данных в ворд или в эксель (по типу расширения).
Пара слов о самом экспорте. Я бы делал через OLE, примеров в инете достаточно. В эксель можно просто по ячейкам добавлять. В ворд если данных мало, то можно заменой, если данных много, то расставляем закладки и соотв. впечатываем данные в соотв. места переходя по этим закладкам. Примеров, как я сказал, в инете предостаточно.
Ответить с цитированием
  #4  
Старый 28.10.2017, 19:11
lx2004nt lx2004nt вне форума
Прохожий
 
Регистрация: 21.10.2017
Сообщения: 4
Версия Delphi: delphi 10.1 Ber
Репутация: 10
По умолчанию

MSWord.ActiveDocument.SaveAs('C:\ex.doc');

Допустим с методом записи информации в фаил разберусь, подскажите как задать местоположение фаила куда сохранить? описанный выше вариант не подходит.
Ответить с цитированием
  #5  
Старый 28.10.2017, 21:51
Аватар для Guaho
Guaho Guaho вне форума
Начинающий
 
Регистрация: 27.08.2017
Сообщения: 173
Версия Delphi: Delphi7
Репутация: 10
По умолчанию

См. выше, уже расписали: "1. Открываем диалог сохранения для выбора пользователем файла"... Компонент SaveDialog на вкладке Dialogs.
Код:
if SaveDialog1.Execute then .....
Ответить с цитированием
  #6  
Старый 04.11.2017, 15:15
lx2004nt lx2004nt вне форума
Прохожий
 
Регистрация: 21.10.2017
Сообщения: 4
Версия Delphi: delphi 10.1 Ber
Репутация: 10
По умолчанию

делаю вот так, не работает
Код:
   
begin
    // RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    AssignFile(F,MSWord.ActiveDocument.SaveAs.FileName);
    Rewrite(F);
    //Writeln(F, 'xyz');
     CloseFile(F);
     ShowMessage('Файл '+SaveDialog1.FileName+' сохранён. ');

       {
     // RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    AssignFile(F,saveDialog1.FileName);
    Rewrite(F);
    //Writeln(F, 'xyz');
     CloseFile(F);
     ShowMessage('Файл '+SaveDialog1.FileName+' сохранён. ');
     }
  end;

Как правильно? я плохо разбираюсь в делфи если честно, не понимаю как правильно сохратить ворд, а так же эксель.
Ответить с цитированием
  #7  
Старый 12.11.2017, 21:00
lx2004nt lx2004nt вне форума
Прохожий
 
Регистрация: 21.10.2017
Сообщения: 4
Версия Delphi: delphi 10.1 Ber
Репутация: 10
Злость

Задолбался, все равно не понимаю.Подскажите пожалуйста,в фаил внести изменения которые расчитывает программа и как это сохранять в определенные директории?

Код:
WorkBook.SaveAs('C:Книга2.xls', -4143);

Код:
MSWord.ActiveDocument.SaveAs('C:\ex.doc');

Код:
begin
  SaveDialog1.DefaultExt := '.xls';
  SaveDialog1.Filter := 'EXCEL files|*.xls';
  if SaveDialog1.Execute then
   begin
    // RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
    //Excel.Visible := True;

    //AssignFile(F,saveDialog1.FileName);
    AssignFile(F, WorkBook.SaveAs.FileName);
    Rewrite(F);

     Writeln(F, 'Доброе время суток. Подскажите пожалуйста как сохранить файл в папку log которая находится в директории программы. Дело в том что я сохраняю файл спомощью следущего когда');
begin
   // Цикл 5 раз
  For i := 1 to (10 div 2) do
       WriteLn(F, '5');
end;

     WriteLn(F, ' 1 ');
     Writeln(F, 'xyz');
     write('Всего изделий:');
     //Excel.Range['b2']:='Привет!';
     CloseFile(F);
     ShowMessage('Файл '+SaveDialog1.FileName+' сохранён. ');
  end;
end;

end;

По сути задача простая записать кучу переменных на выбор в фаил ворд или эксель...перечитал кучу мануалов информации нет.
Ответить с цитированием
  #8  
Старый 13.11.2017, 07:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

тебе где-то в начале сказали, что надо пользоваться OLE для вывода в документы офиса. Файлы офиса имеют сложную структуру, так просто их не запишешь.

Для Excel есть обходной маневр. Он прекрасно умеет читать файлы формата csv. Форматирования, конечно, не будет, но если прввильно составить csv, то можно получить что-то более менее вменяемое.

csv - значения, разделенные запятыми.
Т.е. пишется обычный текстовый файл, просто прикидываешь где должны распологаться значения и, соовтетваенно, расставляешь запятые.

К сожалению, с вордом такой фокус не пройдет. Там придется изгаляться. Можно попользовать TRichEdit, в который вывести все данные, а потом сохранить файл как rtf. Его ворд умеет правильно читать.

Ну а родные форматы - либо работаем через OLE, либо ищем библиотеки для работы с ними, но они, библиотеки, обычно платные.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter