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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2014, 21:41   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Вынести данные из TstringGrid в MS Word

Здравствуйте! Возникла проблема, решить ее оказался не в силах, возможно ли сформировать документ *.doc/*.docx/*.rtf (на крайний случай) из компонента Tstringgrid? Только чтоб обрамление было как на скриншоте, где желтые поля-это данные из tstringgrid, а остальное программно сформированные заготовки
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.04.2014, 21:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделай макет-заготовку в doc-формате. Можно или в ресурс засунуть, или внешним файлом Дальше TWordDocument или CreateOLEObject('Word.Application') и выгружай
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.04.2014, 08:58   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дальше TWordDocument или CreateOLEObject('Word.Application') и выгружай
только надо учесть, что данная программа будет работать только на компьютере, на котором установлен MS Word. иначе будет сразу ошибка при попытке создания OLE объекта...
Хотя, безусловно, вариант вполне рабочий и годный! (как и другие - со своими плюсами и минусами! )

И я не вижу больших проблем писать в RTF - во-первых, это текстовый файл (особой структуры, конечно). во-вторых, есть виндовый контрол (в Delphi обёртка над ним это TRichEdit), который поддерживает сохранение/загрузку из rtf-формата (достаточно убогую и кривую, надо признать. Но всё таки поддержку...)
И ещё, для RTF возможно подготовить шаблон с нужным форматированием и потом в Delphi писать в шаблон нужные данные.
Смотри, например, RepoRTF тут или VK_Report - тут

Последний раз редактировалось Serge_Bliznykov; 04.04.2014 в 09:01.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.04.2014, 20:36   #4
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Ребят, прошу вашей помощи, я физически не успеваю этого сделать, так как на мне висит еще две процедуры, суть в том, чтоб подстроить этот код (он же есть во вложении) под стринггрид моей программы, код нашел в недрах интернета, и не успеваю в нем разобраться, а суть в том, чтобы вывести данные таблицы и tdatetimepicker (с последнем еле справился) в документ ворда. Очень на вас надеюсь, помогите кто как может. Заранее спасибо.

Просто серьезно не успеваю, разъясните что в коде исправить, чтоб в шаблон ворд документа просто добавлялись столбцы грида? Которые не статичны, моя программа создает 4 файла по пути с:/prgfls/смета/**stolbc***, а сохраняет его через tstringlist то есть там список названия столбов есть, и нужно как-то их использовать в виде метки для поиска таких же названий в шаблоне, и заполнения шаблона, помогите пожалуйста, диплом пишу, ничего не успеваю, а это только половина работы, еще надо формулу расчета из столбов делать, но я это сам постараюсь сделать, через парсер, очень на вас надеюсь
Вложения
Тип файла: rar создатель смет1.rar (145.2 Кб, 22 просмотров)
Тип файла: txt код.txt (8.5 Кб, 127 просмотров)
from dark to light)

Последний раз редактировалось Stilet; 27.04.2014 в 20:59.
Алексей_2012 вне форума Ответить с цитированием
Старый 27.04.2014, 11:42   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
var
  W, Table: Variant;
...
W := CreateOleObject('Word.Application');
W.Documents.Add;
W.Selection.Font.Size := 12;
W.Selection.TypeText('');
W.Selection.Font.Bold := true;
W.Selection.TypeText(#13#10'');
W.selection.TypeParagraph;
W.Visible := True;
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range, SG.RowCount, SG.ColCount);
Table := W.ActiveDocument.Tables.Item(1);
Table.Borders.OutsideLineStyle := wdLineStyleSingle;
Table.Borders.InsideLineStyle := wdLineStyleSingle;
for col := 0 to SG.ColCount - 1 do
  for row := 0 to SG.RowCount - 1 do
    Table.Cell(row + 1, col + 1).Range.Text := SG.Cells[Col, row]; // в экселе нумерация ячеек с 1
Как-то так я делал (дербан рабочего кода с выбросом ненужного конкретно Вам)

Последний раз редактировалось phomm; 27.04.2014 в 11:46.
phomm вне форума Ответить с цитированием
Старый 27.04.2014, 15:23   #6
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо, пока нет возможности проверить код, а он просто переносит данные, или вставляет их в шаблонную таблицу doc? Нужен именно второй вариант
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 27.04.2014, 17:47   #7
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Цитата:
Код:
W.ActiveDocument.Tables.Add(W.ActiveDocument.Range, SG.RowCount, SG.ColCount);
SG - ваш стринггрид. Это именно то, что вам нужно.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 27.04.2014, 20:35   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Спасибо, проверил-все работает, но код вырисовывает только таблицу, а надо чтоб как по шаблону, так как программа то создает таблицу, но стринггрид объединять ячейки не умеет, да и потом смет этих много, одна из них во вложениях
Вложения
Тип файла: doc Смета на оценку объекта.doc (63.0 Кб, 13 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 03.05.2014, 23:38   #9
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Кто-нибудь сможет разобраться в коде из прикрепленных файлов? Смета ведь может быть любой размерности (я про таблицу) в шаблон будут вносится названия столбцов, потому что на выходе должен получаться уже готовый документ, который можно выпускать на печать, на подобии вложения из поста 8, ребят, помогайте кто чем может, а то разрываюсь между несколькими программами, а диплом не за горами. Я не прошу написать за меня, я прошу помочь разобраться, в интернете половину ресурсов перевернул
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 05.05.2014, 08:58   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Кто-нибудь сможет разобраться в коде из прикрепленных файлов? Смета ведь может быть любой размерности (я про таблицу) в шаблон будут вносится названия столбцов, потому что на выходе должен получаться уже готовый документ, который можно выпускать на печать, на подобии вложения из поста 8, ребят, помогайте кто чем может, а то разрываюсь между несколькими программами, а диплом не за горами. Я не прошу написать за меня, я прошу помочь разобраться, в интернете половину ресурсов перевернул
Советы из пост #2 и мои из #3 чем-то не устроили?..


p.s. Если у Вас банально нет времени, то почему Вы считаете, что у кого-то это время лишнее?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные из txt в word макросом Bublic Microsoft Office Word 1 25.03.2013 21:39
Данные из БД (dataset) в tstringgrid fezilk25 БД в Delphi 15 01.05.2012 03:59
Как привязать компоненту TComboBox к Button, чтобы при нажатии Button, данные из ComboBox вводились в TstringGrid Marta_ Помощь студентам 2 15.10.2011 01:02
Как записать данные в файл из компонента TstringGrid? Николай ПН Общие вопросы Delphi 4 25.02.2010 12:49
Копировать данные из Excell в Word Dimon_isu Microsoft Office Excel 3 15.05.2008 12:12