2

OLEオートメーションを使用してWord文書を操作しています。を使用してセルのコンテンツを取得できます

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

OleVariantを返します。適切なプロパティを使用しているかどうかわからず、フォーマットを失うことなくこのテキストをTRichEditに貼り付ける方法がわかりません(上付きテキストなど)

4

2 に答える 2

4

リッチエディットとボタンだけでモックアップフォームを設定しました。以下のコードはこれを達成するための最良の方法ではないかもしれませんが、WinXP上のWord2007で動作します。

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;

そして、これは結果です: 結果のスクリーンダンプ。 背景はテーブルのある単語ドキュメントで、前景はリッチエディット付きのデルファイ形式です

唯一のことは、リッチエディットに1行として表示される複数行のテキストです。

于 2012-08-28T07:09:16.637 に答える
0

この問題を OLE オートメーションで解決することを断念しました。TRichView は必要な機能を提供しますが、無料ではありません...

于 2012-08-27T16:45:39.733 に答える