Einzelnen Beitrag anzeigen

pumpe

Registriert seit: 30. Mär 2006
Ort: Neubrandenburg
8 Beiträge
 
#1

Delphi -> MSWord, Tabelle zentrieren

  Alt 30. Mär 2006, 10:56
Moin,

wollte mich mal vorstellen. Ich bin der Neue, ich komm jetzt öfter!

So nun zu meinem Problem. Ich möchte die Daten aus einer DBGrid in eine Word Tabelle übertragen. Soweit funktioniert das ja aber nun ist die Tabelle nicht in der Mitte des Wordokument´s und ich krieg es nicht hin. Ich habe schon gesucht aber ich finde nur wie man den Text in der Tabelle zentriert und nicht die Tabelle selber!

Hier mal der Code, meine Zentrierversuche hab ich mal raus genommem.

Delphi-Quellcode:
  
if radiogroup1.ItemIndex = 0 then
  begin
    ProgressBar1.Position:= 1;
    screen.Cursor := crHourglass;
    try
      // Word Instanz erzeugen
      WordApp:= CreateOleObject('Word.Application');
      ProgressBar1.Position:= 2;
    except
      // Fehler....
      ShowMessage('Word kann nicht gestartet werden');
      Exit;
    end;

    // Spalten, Reihen ermitteln
    iCols := StringGrid1.ColCount;
    iRows := StringGrid1.RowCount;

    ProgressBar1.Position:= 3;

    // Neues Dokument einfügen
    NewDoc := WordApp.Documents.Add ;

    S:= WordApplication1.Selection;
    S.TypeText('Überschrift');
    S.TypeParagraph;
    S.TypeParagraph;
    S.TypeParagraph;
    S.TypeParagraph;


    // Tabelle einfügen
    WordTable:= NewDoc.Tables.Add(WordApp.Selection.Range, iRows, iCols);

    WordTable.Borders.OutsideLineStyle:= wdLineStyleSingle;
    WordTable.Borders.InsideLineStyle:= wdLineStyleSingle;
    ProgressBar1.Position:= 4;

    WordTable.Columns.Item(1).SetWidth(50, 0);
    WordTable.Columns.Item(2).SetWidth(50, 0);
    WordTable.Columns.Item(3).SetWidth(65, 0);
    WordTable.Columns.Item(4).SetWidth(120, 0);
    WordTable.Columns.Item(5).SetWidth(60, 0);
    WordTable.Columns.Item(6).SetWidth(200, 0);

    begin
      ProgressBar1.Max:= iRows;

      // Tabelle ausfüllen mit Daten von Stringgrid
      for iGridRows := 1 to iRows do
      begin
          ProgressBar1.Position:= 6+iGridRows;
        for jGridCols := 1 to iCols do
        begin
          WordTable.Cell(iGridRows, jGridCols).Range.Text:= StringGrid1.Cells[jGridCols - 1, iGridRows - 1];
        end;
      end;
    end;

    // Word anzeigen
    WordApp.Visible:= true;

    ProgressBar1.Position:= 0;

    // Cleanup...
    WordApp := Unassigned;
    NewDoc := Unassigned;
    WordTable := Unassigned;
  end
  else
Danke schonmal für Eure Antworten.
  Mit Zitat antworten Zitat