2

我使用 OLE 自动化处理 Word 文档。我可以使用获取单元格的内容

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

它返回 OleVariant。我不确定我是否使用了正确的属性并且不知道如何在 TRichEdit 中粘贴此文本而不会丢失格式(例如上标文本)

4

2 回答 2

4

我设置了一个模型表单,上面只有一个 Richedit 和一个按钮。下面的代码可能不是实现这一目标的最佳方法,但它适用于 Win XP 上的 Word 2007。

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文档,前景是带有richedit的delphi表格.

唯一的问题是多行文本在 Richedit 中显示为单行。

于 2012-08-28T07:09:16.637 回答
0

我放弃了用 OLE 自动化解决这个问题。TRichView 提供了所需的功能,但它不是免费的......

于 2012-08-27T16:45:39.733 回答