PDA

Ver la Versión Completa : Exportar una tabla como parametro a Word


ingabraham
19-01-2009, 18:24:59
Hola tengo una consulta en sql q me genera una tabla como hago para pasar esa tabla a un documento ya creado.

el codigo es el sgte:

Envio unos datos de parametro al documento .dot de word q tengo creado



Procedure TForm1.SpeedButton3Click(Sender: TObject);
var
Word: Variant;
Documento: Variant;
begin
Try

(* Creas un objeto Word *)
Word := CreateOleObject('Word.Application');
(* Añades un documento basado en la plantilla *) // CertificadoLaboralNormal
Word.Documents.Add('C:\SOFTWARE_NOMINA\CertificadoLaboralNormal.dot');
Documento := Word.Documents.Item(1);
(* Asignas valores a los campos *)
Documento.Variables.Add('NroCertificado', EdConsecutivo.Text);
Documento.Variables.Add('Nombre', Ednombres.Text);
Documento.Variables.Add('Cedula', EdCedula.Text);

Documento.Fields.ToggleShowCodes;
Documento.Fields.Update;

Word.ActiveDocument.SaveAs('C:\SOFTWARE_NOMINA\CertificadoLaboralNormalTmp'+EdConsecutivo.Text);

Word.Visible := true;


ShowMessage('Operación Completada!!');
End
except
on exception do
begin
Word.quit;
end;
end;




Realizo mi sql del query y luego lo mando a crear la tabla:

procedure DumpWord(DataSet: TDataSet; WordDoc: TWordDocument; Nom:String);
var
WordTable: Table;
RowCount, ColCount: Integer;
RowIndex, ColIndex: Integer;
FileName: OleVariant;
begin
DataSet.Open;
//Necesario Para cargar todos los datos en el dataset
DataSet.Last;
DataSet.First;
Try
RowCount := DataSet.RecordCount;
ColCount := DataSet.Fields.Count;
WordDoc.Disconnect;
WordDoc.Connect;
//WordDoc. Range.Text:='Devengados Anuales del Empleado:';
WordTable := WordDoc.Tables.Add(WordDoc.Range, RowCount+1, ColCount, EmptyParam, EmptyParam);
for ColIndex := 1 to ColCount do
begin
WordTable.Cell(1, ColIndex).Range.Font.Bold := 1;
WordTable.Cell(1, ColIndex).Range.Font.Size := 8;
WordTable.Cell(1, ColIndex).Range.Text := DataSet.Fields[ColIndex - 1].FieldName;
WordTable.Cell(1, ColIndex).Range.Paragraphs.Alignment := wdAlignParagraphCenter;
end;
RowIndex := 2;
while not DataSet.Eof do
begin
for ColIndex := 1 to ColCount do
begin
WordTable.Cell(RowIndex, ColIndex).Range.Font.Size := 8; //tamano del txto
// WordTable.Cell(RowIndex, ColIndex).Range.Font.Bold := 1;
if (ColIndex >= 2 )then//sueldo
WordTable.Cell(RowIndex, ColIndex).Range.Text := '$ '+(FormatFloat('#0,',StrToFloat(DataSet.Fields[ColIndex - 1].AsString )))
else
WordTable.Cell(RowIndex, ColIndex).Range.Text := DataSet.Fields[ColIndex - 1].AsString;
end;
Inc(RowIndex);
DataSet.Next;
end;
WordDoc.Range.InsertParagraphAfter;
WordDoc.Range.InsertAfter('Valores Devengados del Empleado '+Nom+' Por Fechas.');

//Guarda el Documento
FileName:='c:\SOFTWARE_NOMINA\PlantillaHistorialTmp.dot' ;
WordDoc.SaveAs(FileName);
// WordDoc.Range.PageSetup.Orientation:=HS_HORIZONTAL;
finally
WordDoc.Application.Visible := true;
// DataSet.Close;
end;
end;


pero yo necesito es pasar esa tabla al documento q tengo y al que envie los datos de parametro.

quien me colabora!!