Einzelnen Beitrag anzeigen

ASM

Registriert seit: 15. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Word Tabelle sortieren mit Delphi

  Alt 22. Aug 2011, 21:23
So geht's z.B. (siehe Anweisung "WordTabelle.Sort()":
Code:
uses COMObj;

const
  wdBorderTop = -1;
  wdBorderLeft = -2;
  wdBorderBottom = -3;
  wdBorderRight = -4;
  wdLineStyleNone = 0;
  wdSortFieldNumeric = 1;
  wdSortOrderAscending = 0;

procedure TForm1.Button1Click(Sender: TObject);
var
  Doc: OleVariant;
  FieldNumber: OleVariant;
  OpenAsTemplate: OleVariant;
  SaveChanges: OleVariant;
  SortFieldType: OleVariant;
  SortOrder: OleVariant;
  Template: Olevariant;
  WordTabelle: OleVariant;
  rows: word;
  cols: word;
  i: integer;
begin
  WordApp := CreateOleObject('Word.Application');
  try
    Template := 'Normal';
    OpenAsTemplate := False;
    Doc := WordApp.Documents;
    Doc := Doc.Add(Template, OpenAsTemplate, EmptyParam, EmptyParam);
    WordApp.Visible := True;
    rows := 10;
    cols := 5;
      //Tabelle erzeugen mit 10 Zeilen und 5 Spalten
    WordTabelle := doc.Tables.Add(WordApp.selection.range, rows, cols, emptyParam, emptyParam);
      // links, rechts, oben, unten ohne Rahmen
    WordTabelle.borders.item(wdBorderLeft).LineStyle := wdLineStyleNone;
    WordTabelle.Borders.item(wdBorderRight).LineStyle := wdLineStyleNone;
    WordTabelle.Borders.item(wdBorderTop).LineStyle := wdLineStyleNone;
    WordTabelle.Borders.item(wdBorderBottom).LineStyle := wdLineStyleNone;
      // 1.Spalte der Tabelle über alle Reihen mit Werten füllen
    randomize;
    for i := 1 to rows do
      WordTabelle.cell(i, 1).range.text := format('%d', [random(99) + 1]);
      // 10 Sek warten, um orginale Tabelleneinträge zu betrachten
    sleep(5000);
    WordTabelle.Sort(FieldNumber := 'Spalte1', SortFieldType := wdSortFieldNumeric,
      SortOrder := wdSortOrderAscending);
        // 10 Sek warten, um die nach Spalte 1 sortierte Tabelle zu betrachten
    sleep(5000);
  finally
    WordApp.Quit; // oder auch noch nicht
    WordApp := UnAssigned;
  end;
end;

Edit: Sorry, sleep(5000) sind natürlich nur 5 (und nicht 10) Sekunden Wartezeit

Geändert von ASM (22. Aug 2011 um 21:47 Uhr) Grund: siehe Erklärung
  Mit Zitat antworten Zitat