Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Servers (https://www.clubdelphi.com/foros/forumdisplay.php?f=9)
-   -   Insertar tabla en una posicion de word (https://www.clubdelphi.com/foros/showthread.php?t=74107)

toni.vi 31-05-2011 02:03:48

Insertar tabla en una posicion de word
 
He estado revisando diferentes hilos y no termino de encontrar la solución de insertar una tabla en un lugar especifico.
Código Delphi [-]
    WordTable := WordDoc.Tables.add(WordDoc.Paragraphs.last.Range, RowCount, ColCount);
En lugar de WordDoc.Paragraphs.last.Range
debería posicionarme y no se como hacerlo.
Alguna idea.
D7

toni.vi 31-05-2011 12:12:01

De hecho lo que necesito es que en medio de un documento donde haya un texto localizable o un marcador, insertar un tabla y pasar los registros.
Esto ultimo ya lo se hacer, con el código que he encontrado en el foro, pero no se como posicionarme e insertar, siempre me inserta o mejor me añade al final del documento y no en la posición que quiero.
Ejemplo:
Documento word
bla...............
bla...............
aqui insertar la tabla
bla...............
bla...............

Gracias

rafita 24-06-2011 13:22:51

Hola Toni,
Como suele ser habitual en mis respuestas no doy una solución a tu problema, pero te explico las opciones que he utilizado cuando se me han planteado situaciones similares a la que planteas:

1º) Insertar la tabla al final y después he añadido el resto del documento, salvo lo que pueda poner en un pie de página. Esto lo hago cuando son pocas líneas.

2º) Monto todo el contenido de lo que va a ser la tabla, separando los campos por tabuladores (#9) y las filas con cambios de línea (#13). Una vez que tengo todo montado lo que hago es sustituir un marcador dentro del texto word.

Suerte, y no dejes de comentar la solución que aplicas.

toni.vi 24-06-2011 15:28:13

la solución que he implementado es:
1.- Busco un marcador que es donde insertaré la tabla, posicionandome en este rango.
2.- Inserto la tabla.

Gracias por tu respuesta.

Toni

Código Delphi [-]
procedure InsertarTabla(DataSet: TDataSet; WordDoc: TWordDocument);
var
  WordTable: Table;
  ColIndexCount, RowCount, ColCount: Integer;
  RowIndex, ColIndex: Integer;

  Marcador : OleVariant;
begin
    RowCount := DataSet.RecordCount;
    ColCount := DataSet.Fields.Count;

    Marcador := 'TABLA_XXXX';
    //busco el marcador y si existe inserto la tabla
    if WordDocument1.Bookmarks.Exists(Marcador) then
    begin
      WordTable := WordDocument1.Tables.add(WordDocument1.Bookmarks.item(Marcador).Range, RowCount + 1, ColCount);

      //aqui hago la cabecera en negrita y en gris
      ColIndexCount := 0;
      for ColIndex := 1 to DataSet.Fields.Count do
      begin
        if DataSet.Fields[ColIndex - 1].Tag = 2 then
        begin
        ColIndexCount := ColindexCount + 1;
        WordTable.Cell(1, ColIndexCount).Range.Paragraphs.Borders.Enable := 1;
        WordTable.Cell(1, ColIndexCount).Range.Font.Bold                 := 1;
        WordTable.Cell(1, ColIndexCount).Range.Text                      := DataSet.Fields[ColIndex - 1].DisplayLabel;
        WordTable.Cell(1, ColIndexCount).Range.Paragraphs.Alignment      := wdAlignParagraphCenter;
        WordTable.Cell(1, ColIndexCount).Range.Cells.Shading.BackgroundPatternColorIndex:= wdGray25;
        end;
      end;

      RowIndex := 2;
      DataSet.First;
      while not DataSet.Eof do
      begin
        ColIndexCount := 0;
        for ColIndex := 1 to DataSet.Fields.Count do
        begin
          //los campos que su tag = 2 son los que quiero que se llenen en la tabla
          if DataSet.Fields[ColIndex - 1].Tag = 2 then
          begin
            ColIndexCount := ColindexCount + 1;
            WordTable.Cell(RowIndex, ColIndexCount).Range.Paragraphs.Borders.Enable := 1;
            WordTable.Cell(RowIndex, ColIndexCount).Range.Text                      := DataSet.Fields[ColIndex - 1].AsString;
          end;
        end;
        Inc(RowIndex);
        DataSet.Next;
      end;
    end;
end;


La franja horaria es GMT +2. Ahora son las 15:27:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi