|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Выгрузка отчета в 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
|
||||
|
||||
В зависимости от расширения файла. В фильтр оба типа добавить.
Пишу программы за еду. __________________ |
#3
|
|||
|
|||
Ну, данные примеры будут выдавать бред и ошибки.
Если уж мы говорим о красивом выводе, то действовать надо примерно так (посностью код писать лень): 1. Открываем диалог сохранения для выбора пользователем файла. В диалоге в фильтре оба типа файла. 2. Если пользователь выбрал файл, то 3. получаем расширение выбранного файла (для определения куда экспортировать) 4. Копируем из папки программы ЗАРАНЕЕ отдизайненый шаблон (ворд или эксель по типу расширения) 5. Вызываем процедуру вывода данных в ворд или в эксель (по типу расширения). Пара слов о самом экспорте. Я бы делал через OLE, примеров в инете достаточно. В эксель можно просто по ячейкам добавлять. В ворд если данных мало, то можно заменой, если данных много, то расставляем закладки и соотв. впечатываем данные в соотв. места переходя по этим закладкам. Примеров, как я сказал, в инете предостаточно. |
#4
|
|||
|
|||
MSWord.ActiveDocument.SaveAs('C:\ex.doc');
Допустим с методом записи информации в фаил разберусь, подскажите как задать местоположение фаила куда сохранить? описанный выше вариант не подходит. |
#5
|
||||
|
||||
См. выше, уже расписали: "1. Открываем диалог сохранения для выбора пользователем файла"... Компонент SaveDialog на вкладке Dialogs.
Код:
if SaveDialog1.Execute then ..... |
#6
|
|||
|
|||
делаю вот так, не работает
Код:
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
|
|||
|
|||
Задолбался, все равно не понимаю.Подскажите пожалуйста,в фаил внести изменения которые расчитывает программа и как это сохранять в определенные директории?
Код:
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
|
|||
|
|||
тебе где-то в начале сказали, что надо пользоваться OLE для вывода в документы офиса. Файлы офиса имеют сложную структуру, так просто их не запишешь.
Для Excel есть обходной маневр. Он прекрасно умеет читать файлы формата csv. Форматирования, конечно, не будет, но если прввильно составить csv, то можно получить что-то более менее вменяемое. csv - значения, разделенные запятыми. Т.е. пишется обычный текстовый файл, просто прикидываешь где должны распологаться значения и, соовтетваенно, расставляешь запятые. К сожалению, с вордом такой фокус не пройдет. Там придется изгаляться. Можно попользовать TRichEdit, в который вывести все данные, а потом сохранить файл как rtf. Его ворд умеет правильно читать. Ну а родные форматы - либо работаем через OLE, либо ищем библиотеки для работы с ними, но они, библиотеки, обычно платные. |