Скопируйте форматированный текст из ячейки в документе "Таблица в Word" в TRichEdit

Я использую OLE Automation для работы с документом Word. Я могу получить содержимое ячейки, используя

Table.Cell (rowIndex, colIndex).Range.FormattedText

он возвращает OleVariant. Я не уверен, что использую правильное свойство, и понятия не имею, как вставить этот текст в TRichEdit, не теряя форматирование (например, текст в верхнем индексе)

2 ответа

Я создал макет формы только с рихедитом и кнопкой на нем. Приведенный ниже код, возможно, не лучший способ добиться этого, но он работает с Word 2007 на Win XP.

uses  Word_TLB;

procedure TForm1.Button1Click(Sender: TObject);
var
  wordApp : _Application;
  doc : WordDocument;
  table : Word_TLB.Table;
  filename : OleVariant;
  aRange : Range;
  aWdUnits : OleVariant;
  count : OleVariant;
begin
  //need to back up 2 characters from range object to exclude table border.
  //Remove 1 character only if using selection
  count := -2;        
  aWdUnits := wdCharacter;
  filename := '"H:\Documents and Settings\HH\My Documents\testing.docx"';
  RichEdit1.Clear;
  try
    wordApp := CoWordApplication.Create;
    wordApp.visible := False;

    doc := wordApp.documents.open( filename, emptyparam,emptyparam,emptyparam,
      emptyparam,emptyparam,emptyparam,emptyparam,
      emptyparam,emptyparam,emptyparam,emptyparam,
      emptyparam,emptyparam,emptyparam,emptyparam );

    table := doc.tables.item(1);
    aRange := table.cell(3,1).Range;
    aRange.MoveEnd(aWdUnits, count); //This is needed so border is not included
    aRange.Copy;
    RichEdit1.PasteFromClipboard;
    RichEdit1.Lines.Add('');

  finally
    wordApp.quit(EmptyParam, EmptyParam, EmptyParam);
  end;
end;

И это результат:Результирующий дамп экрана. Фон - это документ Word с таблицей, а forground - форма delphi с рихедитом,

Единственное, что многострочный текст появился в richedit как одна строка.

Я отказался от решения этой проблемы с OLE Automation. TRichView дает желаемую функциональность, но это не бесплатно...

Другие вопросы по тегам