FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#7
|
|||
|
|||
Hola
quizas el siguiente ejemplo te pueda ayudar, es utililizando el componente TExcelAplication, del palette Servers. Receta: Ingredientes en delphi: 1)TForm of course 2)TQuery 3)SaveDialog 5)TExcelapplication 6)bitButton 7)dbGrid procedure TForm1.bbtnExportToExcelClick(Sender: TObject); var LineNumber, LCID : Integer; LineString : string; begin with SaveDialog1 do begin FileName :=''; Filter:= 'Excel files|*.XLS;All Files|*.*'; DefaultExt := 'XLS'; Title := 'Exporting to Excel'; if execute then begin query1.Open; LCID := GetUserDefaultLCID; with ExcelApplication1 do begin connect; try visible[LCID] := true; Workbooks.Add(EmptyParam,LCID); //Paso 1 Range['A1','J1'].Value := VarArrayOf(['Order No', 'Cust No','Sale Date','Emp No', 'Ship Via', 'Terms','Items Total', 'Tax Rate','Freight','Amount Paid']); //Paso2 Se definen formato de celdas (alineacion de texto, margenes, fuente, etc.) with Range['A1','J1']do begin HorizontalAlignment := xlcenter; VerticalAlignment := xlBottom; Wraptext := false; Orientation := 0; ShrinkTofit := false; MergeCells := false; Font.Bold := true; end; Query1.First; LineNumber := 1; //Paso 3, comenzamos a enviar datos a Excel While not query1.Eof do begin Inc(lineNumber); LineString := IntToStr(LineNumber); Range['A'+LineString, 'J'+LineString].Value := VarArrayof([Query1OrderNo.value, Query1CustNo.Value, //Paso 4 FormatDateTime('d-mmm-yy',Query1SaleDate.Value), Query1EmpNo.Value, Query1ShipVIA.Value, Query1Terms.Value, Query1ItemsTotal.Value, Query1TaxRate.Value, Query1Freight.Value, Query1AmountPaid.Value]); Query1.Next; end; //Paso 5 Range['H2','G'+LineString].NumberFormat := '0.00%'; Range['G2','G'+LineString].NumberFormat := '$#,##0.00'; Range['I2','I'+LineString].NumberFormat := '$#,##0.00'; Range['J2','J'+LineString].NumberFormat := '$#,##0.00'; Range['A1','J'+LineString].AutoFormat(xlRangeAutoFormatlist1, true, true,true,true,true,true); Range['A1','J'+LineString].Columns.AutoFit; ActiveWorkbook.SaveAs(FileName,xlNormal, '', '', false, false, xlNochange,xlUserResolution,False,EmptyParam,EmptyParam, LCID); Quit; finally disconnect; end; //try end; //with Excelapplication1 end; //if execute end; //with Savedialog1 end; Tip adiconal Range("A1").Select ActiveCell.FormulaR1C1 = "Order No" Es equivalente en Delphi a: Range['A1','A1'].select; ActiveCell.FormulaR1Ci := 'Order No'; Siempre es mejor utilizar arreglos para insertar en Excel datos por renglon, que celda por celda Range['A1','J1'].Value := VarArrayOf(['Order No', 'Cust No','Sale Date','Emp No', 'Ship Via', 'Terms','Items Total', 'Tax Rate','Freight','Amount Paid']); Saludos!! Pd. Espero te sirva de algo
__________________
Ana |
|
|
|