Документ в формате rtf как создать таблицу

Документ в формате rtf как создать таблицу

мне нужно создать таблицу в RTF-файле. Однако я не знаком с RTF. Вот пример текстового файла, эти файлы должны заменить:

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

Я в курсе cell ,
ow etc., но я не могу понять, как правильно использовать их в качестве документации, которая у меня есть нашел не очень хорошо. Пожалуйста помочь.

2 ответов

строка delimted с rowd .
ow

каждая ячейка заканчивается cell

cellx определяет правую сторону соответствующей ячейки в твипах

редактирование непосредственно в RTF становится быстро нечитаемым. Возможно этот практический подход работает лучше: — Создайте макет примера (в Excel или Word ), используя уникальные идентификаторы в качестве заполнителей ( пример " (P1)" ) — Затем Сохранить как RTF — Откройте RTF в блокноте — скопируйте коды RTF "как есть" и замените заполнители фактическими значениями в вашей программе

Здравствуйте, подскажите, в формате .rtf предусмотрена возможность создавать таблицы? Если да, то как это сделать? Хотелось бы в RichEdit-е отображать таблицы, а потом сохранять все это дело в файл.


Курдль © ( 2004-04-27 20:25 ) [1]

Есть такая фишка. RTF оперирует простенькими тэгами типа
ow cell line и т.п. Кроме того, имеет какой-то префикс типа описания шрифтов, чарсета и т.п.
Я делал такую фишку, но найти не могу — в инете гуляют описания стандарта RTF — ищи!


evvcom © ( 2004-04-28 01:05 ) [2]

Сделай что надо в Word и сохрани как rtf.


solo © ( 2004-04-28 10:05 ) [3]

2 evvcom 🙂 мне такое не подходит, надо делать все программно. А кто-нибудь подскажите урл, где лежит описание формата .rtf и чтоб про таблицы было, а то у меня есть одно, так там о таблицах не говориться.


evvcom © ( 2004-04-28 10:07 ) [4]

Блин! Все разжевывать надо? Сохранишь из Word, потом откроешь и посмотришь, как это получилось. По аналогии напишешь программно.


solo © ( 2004-04-28 13:59 ) [5]

2 evvcom, прошу прошения, может плохо сформулировал. То что ты предлагал, я сделал в первую очередь, посмотрел, если разбираться голову сломать можно. А меня время сильно жмет, я диплом дописываю, хотелось бы уж сразу описание заиметь.


Курдль © ( 2004-04-28 14:09 ) [6]


> Блин! Все разжевывать надо?

Я попробовал в Яндексе поискать по фразе "Формат Rich Text (RTF)".
Вывалилось 3276 документов, первый же из которых оказался тем, что надо: "http://blackman.wp-club.net/docum/rtf.php"
Это что, сверхзадача, которую самому проделать нельзя? 🙁


ЮрийК © ( 2004-04-28 15:14 ) [7]

Сделай программно через Word, примеры ищи в MSDN.


Курдль © ( 2004-04-28 15:15 ) [8]


> Сделай программно через Word

И как это должно выгдядеть?


ЮрийК © ( 2004-04-28 15:21 ) [9]

В MSDN или воспользуйся поиском в интернете. Слова: Delphi, Word.Application, CreateOleObject.

и так далее, ищи примеры.


Курдль © ( 2004-04-28 15:23 ) [10]


> Сделай программно через Word


> wa := CreateOleObject("Word.Application");

Вы бы хоть добавляли к своим категоричным советам нечто навроде "а не попробовать ли. " или "возможно я ошибаюсь, но сделать можно и так. "! Особенно когда всерьез советуете человеку удалять гланды через ж. елудок! 🙁


ЮрийК © ( 2004-04-28 15:34 ) [11]

"evvcom © (28.04.04 01:05) [2]
Сделай что надо в Word и сохрани как rtf."

Всё что можно сделать в Word ручками, можно сделать и программно. Но нужно разбираться, там много объектов. Поэтому нужно найти наиболее подходящий пример и от него плясать.

например (на СИ):
открытие Doc файла и сохранение в HTML
BOOL DocToHtml(char* fIn, char* fOut) <

// Convenient values declared as ColeVariants.
COleVariant covTrue((short)TRUE),
covFalse((short)FALSE),
covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

// Get the IDispatch pointer and attach it to the objWord object.
_Application objWord;
if (!objWord.CreateDispatch("Word.Application"))
<
return ERR_WORD_RUN;
>
Documents docs(objWord.GetDocuments());
_Document doc;
doc.AttachDispatch(docs.Open(
COleVariant(fIn,VT_BSTR),
covFalse, // Confirm Conversion.
covTrue, // ReadOnly.
covFalse, // AddToRecentFiles.
covOptional, // PasswordDocument.
covOptional, // PasswordTemplate.
covFalse, // Revert.
covOptional, // WritePasswordDocument.
covOptional, // WritePasswordTemplate.
covOptional, // Format. // Last argument for Word 97
covOptional, // Encoding // New for Word 2000/2002
covTrue // Visible
) // Close Open parameters
); // Close AttachDispatch(Е)
doc.SaveAs(COleVariant(fOut,VT_BSTR), COleVariant((short)8),
covOptional, covOptional, covFalse,
covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional);
objWord.Quit(covFalse, covOptional, covOptional);
return OK;
>


Курдль © ( 2004-04-28 16:37 ) [12]


> Всё что можно сделать в Word ручками, можно сделать и программно.

ЗАЧЕМ? Если Вам понадобится в программе посчитать 2*2=4, вы что, по OLE полезете к Calculator.exe? А если Ворда на компе нет?

Читайте также:  Как перемножить таблицы в excel


ЮрийК © ( 2004-04-28 17:08 ) [13]

Требуется не 2*2 посчитать, а таблицы создать и сохранить в RTF.
Это посерьёзнее будет.


Курдль © ( 2004-04-28 17:35 ) [14]


> Требуется не 2*2 посчитать, а таблицы создать и сохранить
> в RTF.
> Это посерьёзнее будет.

У меня этот код занял


ЮрийК © ( 2004-04-28 17:49 ) [15]

Привели бы код в таком случае. Вместо вопроса зачем.


Курдль © ( 2004-04-28 17:53 ) [16]

Если там найдется парочка ссылок на константы из других модулей — я не виноват!

//******************************************************************************
// Функция создания образа файла RTF в виде таблицы, используемой, как источник
// данных слияния (MailMerge.DataSource) в MS Word
// Принимает TStringList с записанными в него данными. Каждая строка (Strings[i])
// предтавляет собой единицу данных. Причем группа первых строк служит заголовком
// в таблице. Количество колонок в таблице определяет аргумент colCount. Общее
// количество строк в StringList должно быть кратно числу колонок. Функция
// записывает текст RTF обратно в StringList и в случае успеха, — возвращает True
//******************************************************************************

uses Classes, Windows, Forms, SysUtils;

function CreateRTF(StringList: TStringList; colCount: Integer): Boolean;

resourcestring
filePrefix = " <
tf1ansiansicpg1251deff0deflang1049<fonttbl<f0froman"+
"fcharset204<*fname Times New Roman;>Times New Roman CYR;> <"+
"f1fromanfcharset0 Times New Roman;>>"#13#10"viewkind4uc1"#13#10;
rowPrefix = " rowd rgaph108 rleft-108";

sArraySizeError = "Размер массива меньше количества колонок";
sDivisionError = "Размер массива не делится на количество колонок";
sError = "Ошибка";

function CreateRTF(StringList: TStringList; colCount: Integer): Boolean;
var x, y, i, ln: Integer; s0, s, sResult: string;
begin
ln := StringList.Count;
Result := False;
try
if ln 0 then Exception.Create(sDivisionError);
sResult := filePrefix;
for y := 0 to (ln — 1) div colCount do
begin
sResult := sResult + rowPrefix;
for x := 0 to colCount — 1 do sResult := sResult + "cellx" + IntToStr(2108 + x * 2000) + " ";
sResult := sResult + "pardintblf0fs16 ";
for x := 0 to colCount — 1 do
begin
s0 := StringList[y * colCount + x]; s := "";
for i := 1 to Length(s0) do
case s0[i] of
#13: s := s + "line ";
" ".."[","]".."z": s := s + s0[i];
#128..#255: s := s + """" + IntToHex(Ord(s0[i]), 2);
"","<",">": s := s + "" + s0[i];
end;
sResult := sResult + s + "cell ";
end;
sResult := sResult + "
ow"#13#10;
end;
sResult := sResult + "pardpar >";
StringList.Text := sResult;
Result := True;
except
on E: Exception do Application.MessageBox(PChar(E.Message), PChar(sError), MB_ICONSTOP);
end
end;


evvcom © ( 2004-04-28 23:38 ) [17]

Ну вы, блин, даете! Я про Word заикнулся только для того, чтобы посмотреть на результат. Как Word в rtf сгенерит таблицы. Перечитайте вопрос! Я совсем не намекал на то, чтобы через OLE лезть в Word, рисовать таблицы, а потом заставлять его все это сохранять в rtf, после чего этот rtf грузить в ReachEdit. Действительно так получается "удаление гланд через ж. елудок".

Повторяю еще раз, Word использовать только для того, чтобы увидеть какие именно и в каком порядке он сгенерирует тэги, о которых было упомянуто в [1] ответе.
Используйте для изучения готовые инструменты. Чего велосипеды изобретать?


Курдль © ( 2004-04-29 10:18 ) [18]


> Повторяю еще раз, Word использовать только для того, чтобы
> увидеть какие именно и в каком порядке он сгенерирует тэги,
> о которых было упомянуто в [1] ответе.
> Используйте для изучения готовые инструменты. Чего велосипеды
> изобретать?

Согласен! Но это когда не хватает документации.
А здесь же налицо готовая спецификация по формату RTF! Чего же боле?


evvcom © ( 2004-04-29 11:47 ) [19]

Очень часто работающий пример нагляднее документации. Правда, сейчас и в документациях примеров хватает. Так что .
А автор вопроса вообще замолчал, то ли разобрался, то ли ему это уже не надо. А мы тут спорим.

Данный формат был определен фирмой Microsoft как стандартный формат для обмена текстовыми документами. Следовательно, по назначению этот формат подобен SYLK-формату для электронных таблиц. RTF поддерживается многими продуктами фирмы Microsoft. Так, например, начиная с версии 2.0, он введен в Windows в качестве Clipboard-формата, благодаря чему возможен обмен данными между различными прикладными программами Windows. Кроме того, RT-формат поддерживается программами WORD для Macintosh, начиная с версии 3.X, и WORD для PC, начиная с версии 4. X.

В RTF для обмена документами используются только представимые символами коды из ASCII-, MAC- и PC-символьного набора. Кроме текста, файл в RT-формате в читаемой форме содержит команды управления.

Документ состоит преимущественно из команд управления настройки программы чтения файлов в RTF-формате. Эти команды можно разделить на управляющие слова (control words) и управляющие символы (control symbols).

Управляющее слово представляет собой последовательность символов с разделителем (delimiter) в конце:

Читайте также:  Как повернуть диаграмму в excel

Перед управляющим словом вводится обратная косая черта "" (backslash). В качестве разделяющих могут использоваться следующие символы:

  • Пробел (space), причем этот символ относится к управляющему слову;
  • Цифра или знак "-". После этих символов должен следовать параметр с разделителем. В качестве разделителя может быть использован пробел или другие символы, кроме цифр и букв;
  • Все символы, отличные от цифр и букв. Эти символы не относятся к управляющему слову.

В RT-формате для задания управляющей последовательности используются буквы от "А" до "Z" и от "а" до "z", а также цифры от "0" до "9". Национальные символы к управляющей информации не относятся.

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

В настоящее время определены только некоторые из этих символов. Поэтому при чтении неизвестные символы могут быть пропущены.

В RT-формате существует возможность объединять отдельные последовательности в группы при помощи скобок:

Такие группы создаются, например, при описании сносок, колонтитулов и т.п. Если необходимо разместить символы "", "<" или ">" внутри обычного текста, то перед ними надлежит поставить обратную косую черту:

Это позволяет программе, читающей RTF-последовательность, распознать, что символ не следует интерпретировать как управляющий.

В RT-формате используются также некоторые символьные коды для управления печатью

Код Значение
09Н Табулятор
0АН Символ CR
0СН Символ LF

Символы CR и LF, расположенные внутри текста, будут пропущены. Microsoft использует эти символы для большей наглядности при представлении RTF-файла. Внутри управляющих слов символы CR и LF могут иметь особое значение, подробнее об этом будет сказано при описании команд.

Специальные управляющие слова (special control words)

В RTF имеются управляющие слова специального назначения. Рассмотрим кратко эти слова и их назначение.

Управляющее слово change page number выводит текущий номер страницы.

Управляющее слово change footnote активизирует автоматическую нумерацию сносок.

С помощью change date можно вывести текущую дату.

С помощью change time можно вывести текущее время.

Ссылка на примечание (текст следует в группе).

Свидетельствует об изменении линии, отделяющей сноски от текста.

С помощью данной последовательности вводится текст формулы.

Обозначает подпункт индекса.

Текст может быть пропущен при чтении RTF-формата.

Задает жесткий (неразрываемый) пробел между двумя словами, т.е. в этой позиции предложение не может быть разделено при переносе на следующую строку.

Символ обозначает мягкий перенос (nonrequired hyphen).

Символ обозначает неразрываемый перенос (nonbreaking hyphen), на месте которого слово не может быть разделено.

Последовательность позволяет прямой ввод в тексте шестнадцатеричных чисел. Они задаются вместо символов hh.

Данная последовательность задает переход на новую страницу.

Эта последовательность вызывает переход на новую строку в тексте.

С помощью данной последовательности в тексте отмечается конец абзаца. Последовательность раr может заменяться последовательностью 10 или 13. При этом 10 соответствует ASCII-символу с кодом 10 (carriage return). Непосредственно ввести ASCII-код 10 (CR) нельзя, т.к. он игнорируется программой чтения.

Эта последовательность обозначает конец текстового фрагмента или текстового абзаца.

Данная последовательность заменяет табулятор. Можно также непосредственно задавать ASCII-код 09Н.

Конец таблицы (столбец).

Конец таблицы (строка).

Операторы настройки (destination control words)

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

Ниже описан формат некоторых операторов.

Задает метку начала файла. В качестве параметра программа, при помощи которой создается файл, может указывать номер версии. Например:

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

Установка вида кодировки для сохраняемого текста осуществляется с помощью следующих операторов:

  • ansi: текст хранится в стандартном ASCII-формате. Этот формат используется, например, в Windows.
  • mac:. текст хранится в кодировке Macintosh
  • рс: для вывода текста используется кодировка символов IBM-PC.
  • рса: IBM-PC Code Page 850 (модель PS2).

Для передачи текстов между различными системами должна использоваться кодировка ansi.

colortbl

Windows и другие программы пользуются палитрами для определения используемых цветов. Чаще всего палитра состоит из 16 различных цветов, получаемых путем комбинации основных цветов — красного, зеленого и синего. Команда colortbl позволяет изменить отдельные определения в палитре. Для каждого цвета в таблице указывается величина красной, зеленой и синей составляющей. Каждый цвет описывается тремя параметрами:

Вместо 000 указывается величина доли цвета в диапазоне от 0 до 255. Пример: в таблице, состоящей из 16 цветов, должны быть заново определены цвета 0-й и 2-й. Для переопределения цветов может быть задана следующая последовательность:

Определение цвета завершается точкой с запятой. Поскольку 1-й цвет остается без изменений, в последовательности два символа ";" следуют один за другим. Последовательность завершается закрывающей скобкой.

Читайте также:  За сколько минут спутник облетает вокруг земли

Оператор cfn определяет цвет фона (при стандартной настройке n=0), а оператор cbn — цвет символа (при стандартной настройке n=0).

fonttbl

Данный оператор используется для построения таблицы шрифтов и соотносит имя шрифта (группы шрифтов) с номером шрифта. При определении шрифта можно использовать следующие операторы:

  • fnil: имя группы шрифтов неизвестно. При выводе должен использоваться стандартный шрифт.
  • froman: должны использоваться шрифты группы Roman (например, Times Roman)
  • fswiss: этот оператор предписывает использование шрифтов из группы Swiss (Helvetica, Swiss и т.д.)
  • fmodern: могут использоваться шрифты Pica, Elite и Courier.
  • fscript: используются курсивные шрифты группы Script.
  • fdecor: при указании этого оператора шрифты должны выбираться из группы Decor (Old English и т.д.).
  • ftech: выбор группы шрифтов с техническими и математическими символами (SYMBOL и т.д.).

Команда для создания группы шрифтов может состоять из таких операторов:

После ключевого слова fonttbl следует первый номер шрифта f0. Далее идет определение группы шрифтов. Здесь после номера 0 указано fnil, т.е. имя группы неизвестно. Следующий параметр обозначает имя выбираемого шрифта (например, roman h). Указание default говорит считывающей программе о том, что следует использовать стандартный шрифт. После имени шрифта стоит точка с запятой. В приведенном примере определены только шрифты с номерами 1 и 2. Вся последовательность может быть объединена фигурными скобками в группу.

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

stylesheet

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

  • sbasedon000: вместо символов 000 указывается номер вида шрифта, который используется в качестве текущего.
  • snext000: назначает номер следующего вида шрифта (style), который — станет текущим.

Оператор может иметь, например, следующий вид:

Шрифты нумеруются числами от 0 до n (s0. ). В первой строке стилю абзаца 0 (s0) предписывается имя Normal. Вывод текста выполняется шрифтом 3 (f3), размером 10 пунктов (fs20). Параметр qj говорит о том, что надпись должна выравниваться по формату. Вторая строка определяет стиль шрифта 1, который получает имя Heading Level 3. Шрифт имеет размер 15 пунктов, жирное начертание (Ь = bold) и при выводе надпись центрируется (qc).

Этот оператор используется при описании рисунка в формате битовой карты (bitmap). Следующие параметры содержат описание рисунка в виде шестнадцатеричных значений. Параметры могут быть выборочно использованы для определения геометрии рисунка или его формата:

  • pich000: оператор указывает высоту рисунка в пикселях. Вместо трех нулей подставляется числовое значение. Если оператор отсутствует, высота рисунка определяется из текущих графических данных. С помощью параметра можно задать для рисунка определенную высоту.
  • piw000: оператор задает ширину рисунка в пикселях. Справедливо все, сказанное о предыдущем операторе.
  • picscaled: с помощью этого оператора рисунок масштабируется таким образом, чтобы он точно заполнял отведенную для него область.
  • wmetafilen: параметр указывает, что данные хранятся в формате Windows-метафайла. Параметр n определяет тип метафайла (1 = ММ-текст).
  • macpict: параметр указывает, что данные хранятся в Macintosh-формате Quick-Draw.
  • in000:. параметр определяет количество байтов. Вместо трех нулей записывается шестнадцатеричное число.
  • wbitmapn: параметр определяет формат bitmap-рисунка. Параметр n задает тип (0 соответствует логической битовой карте).
  • rdrs: определяет простую рамку для рисунка
  • rdrdb: определяет двойную рамку для рисунка.
  • rdrth: определяет жирную линию для рамки рисунка.
  • rdrsh: определяет затененную рамку для рисунка
  • rdrdot: определяет для рисунка пунктирную линию.
  • rdrhair: определяет тонкую линию для рамки рисунка.
  • picwGoaln: задает желаемую ширину рисунка в twips
  • pichGoaln: задает желаемую высоту рисунка в twips.
  • picscalexn: задает горизонтальное масштабирование (n может принимать значения от 1 до 100, по умолчанию -10).
  • picscaleyn: задает вертикальное масштабирование (n может принимать значения от 1 до 100, по умолчанию — 10).
  • piccroptn: описывает верхнее поле рисунка в twips. При положительных значениях параметра n верхняя часть рисунка обрезается. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.
  • рiccrорbп: описывает нижнее поле рисунка в twips. При положительных значениях параметра n нижняя часть рисунка обрезается. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.
  • рiссrорrn: описывает правое поле рисунка в twips. При положительных значениях параметра n рисунок обрезается справа. Отрицательные значения n дают возможность построить вокруг рисунка рамку. Стандартное значение n равно 0.
  • piccropln: описывает левое поле рисунка в twips. При положительных значениях параметра п рисунок обрезается слева. Отрицательные значения п дают возможность построить вокруг рисунка рамку. Стандартное значение п равно 0.
  • wbmbitspixeln: определяет количество битов, приходящихся на пиксел, для bitmap-рисунка (стандартное значение равно 1).
  • wbmplanesn: определяет количество битовых плоскостей (стандартное значение равно 1).
  • wbmwidtbbytesn: определяет длину битовой карты в байтах
Ссылка на основную публикацию
Диаграмма последовательности в visio
Диаграмма последовательностей в среде Microsoft Visio обозначается, как «Схема последовательностей». Для создания такой диаграммы следует использовать пункт «Создать/Схема последовательностей» контекстного...
Груз p начинает опускаться с постоянным ускорением
В 11:23 поступил вопрос в раздел ЕГЭ (школьный), который вызвал затруднения у обучающегося. Вопрос вызвавший трудности Ответ подготовленный экспертами Учись.Ru...
Гугл дневник мобайл что это
Результаты поиска Услуги и платные сервисы Мобильное приложение доступно для скачивания в App Store (для пользователей IOS) и Play Market...
Длина поля измеряется в access
1. С помощью какого значка запускается программа Microsoft Access 2010 A. + B. C. D. 2. Как запустить программу A....
Adblock detector