procedure TForm5.BitBtn6Click(Sender: TObject); var Excel : Variant; var Libro : Variant; var i:integer; var j:integer; var _FilaIni: integer; begin Excel := CreateOleObject ('Excel.Application'); Excel.Visible := True; // Agrega un libro. Excel.WorkBooks.Add (-4167); // Le asigna un nombre al libro Excel.WorkBooks[1].WorkSheets[1].Name := 'Reporte'; // Hace un puntero al libro del Excel. Libro := Excel.WorkBooks[1].WorkSheets['Reporte']; excel.worksheets[1].Range['B1','B1'].ColumnWidth :=45; excel.worksheets[1].Range['C1','C1'].ColumnWidth :=13; excel.worksheets[1].Range['D1','E1'].ColumnWidth :=15; excel.worksheets[1].Range['F1','F1'].ColumnWidth :=16; excel.worksheets[1].Range['G1','H1'].ColumnWidth :=9; excel.worksheets[1].Range['I1','I1'].ColumnWidth :=14; Libro.Cells.Item[1,1].Font.Bold:=True; Libro.Cells.Item[1,1].font.size:=16; Libro.Cells.Item[2,1]:= ' Inventario en proceso del departamento: '+dep2.Text + ' A ' +dep3.Text; Libro.Cells.Item[2,1].Font.Bold:=True; Libro.Cells.Item[3,1].Font.Bold:=True; Libro.Cells.Item[3,2].Font.Bold:=True; Libro.Cells.Item[3,3].Font.Bold:=True; Libro.Cells.Item[3,4].Font.Bold:=True; Libro.Cells.Item[3,5].Font.Bold:=True; Libro.Cells.Item[3,6].Font.Bold:=True; Libro.Cells.Item[3,7].Font.Bold:=True; Libro.Cells.Item[3,8].Font.Bold:=True; Libro.Cells.Item[3,9].Font.Bold:=True; Query.Open; i:=3; query.SQL.Clear; query.SQL.Add('SELECT * FROM arm0062 WHERE departamento>=:inidep and departamento<=:findep and tipo_material>=:inimat and tipo_material<=:finmat order by codigo asc '); query.ParamByName('inidep').Asstring:=inidep.Text; query.ParamByName('findep').Asstring:=findep.Text; query.ParamByName('inimat').Asstring:=inimat.Text; query.ParamByName('finmat').Asstring:=finmat.Text; query.Open; while not Query.EOF do begin Libro.Cells [1,1] := ' CLASIC AND BASIC SA DE CV'; Libro.Cells [3,1] := 'codigo'; Libro.Cells [3,2] := 'Nombre'; Libro.Cells [3,3] := 'departamento'; Libro.Cells [3,4] := 'tipo de material'; Libro.Cells [3,5] := 'cantidad piezas'; Libro.Cells [3,6] := 'cantidad material'; Libro.Cells [3,7] := 'unidad'; Libro.Cells [3,8] := 'costo'; Libro.Cells [3,9] := 'total'; i :=i+1; Libro.Cells [i,1] := Query.FieldByName ('codigo').AsString; Libro.Cells [i,2] := Query.FieldByName ('nombre').AsString; Libro.Cells [i,3] := Query.FieldByName ('departamento').AsString; Libro.Cells [i,4] := Query.FieldByName ('tipo_material').AsString; Libro.Cells [i,5] := Query.FieldByName ('cant_piezas').AsString; Libro.Cells [i,6] := Query.FieldByName ('cant_material').AsString; Libro.Cells [i,7] := Query.FieldByName ('unidad').AsString; Libro.Cells [i,8] := Query.FieldByName ('costo').AsString; Libro.Cells [i,9] := Query.FieldByName ('total').AsString; Query.Next; end; Query.Close; end;
suma cuando se exporta a excel
#1
Posted 31 October 2012 - 12:18 PM
#2
Posted 31 October 2012 - 12:55 PM
codigo nombre cantidad piezas costo total a01 comoda 5 100 200 a02 buro 12 2 24 total 17 224
#3
Posted 31 October 2012 - 01:11 PM
1- Incluir en el código tantas variables como necesites e ir sumando fila por fila los valores y al finalizar el ciclo agregar una fila donde coloques los valores acumulados.
2- agregar una fórmula a excel al final de cada columna de la forma:
80.Libro.Cells [i,9].formula := 'SUM(A2:A50)';
#4
Posted 31 October 2012 - 01:29 PM
Libro.Cells [i+1,9] := '=SUMA(I4:I255)';
sabes que el rango de registros no siempre es el mismo y con este ejemplo el rango es fijo creo que ahi abria problema
#5
Posted 31 October 2012 - 01:36 PM
libro.cells[].formula
prueba cambiando sum por suma
#6
Posted 31 October 2012 - 02:00 PM
#7
Posted 31 October 2012 - 03:09 PM
#8
Posted 31 October 2012 - 03:58 PM
#9
Posted 31 October 2012 - 04:16 PM
si siempre inicio en la fila 4, pero me podrias dar un ejemplo usando I asi como lo mencionas porque no logro comprenderlo bien
Tu mismo usas esa i para ir recorriendo tu query e insertando los datos, revisa tu primer hilo ... Al terminar el ciclo i se queda con un valor que te dice la última fila que insertaste y eso te puede ayudar para saber cuál será tu rango a sumar...
Saludox !
#10
Posted 31 October 2012 - 04:39 PM
#11
Posted 31 October 2012 - 04:50 PM
que hay,si esa parte si la comprendo lo que no logro saber es como hacerle para que cambie esta parte del rango (SUMA(I4:I255)) usando esa variable ahi es donde la logica no me alcanza jeje
Que te parece si ponemos en práctica la función format() de la unidad SysUtils.
libro.cells[X].formula := format( '=SUMA(I4:I%d)', [I+4] );
Saludos
#12
Posted 31 October 2012 - 05:14 PM
libro.cells[i+1,9].formula:= format( '=SUM(I4:I%d)', [I] );
ya nomas lo que me faltaria para que quede perfecto es para configurar los margenes ya que al ver la hoja en vista previa no esta configurada pero creo que tendre que abrir otro hilo
#13
Posted 31 October 2012 - 05:19 PM
muchas gracias por sus respuestas ya quedo lo hice de la siguiente forma:
delphi
libro.cells[i+1,9].formula:= format( '=SUM(I4:I%d)', [I] );
ya nomas lo que me faltaria para que quede perfecto es para configurar los margenes ya que al ver la hoja en vista previa no esta configurada pero creo que tendre que abrir otro hilo
Yeap !
Saludox !
#14
Posted 31 October 2012 - 05:27 PM
muchas gracias por sus respuestas ya quedo lo hice de la siguiente forma:
delphi
libro.cells[i+1,9].formula:= format( '=SUM(I4:I%d)', [I] );
ya nomas lo que me faltaria para que quede perfecto es para configurar los margenes ya que al ver la hoja en vista previa no esta configurada pero creo que tendre que abrir otro hilo
De cualquier forma, me alegra que éste hilo quede como [RESUELTO]
Edito: Ya vi, I la inicializas con 3. No he dicho nada
Saludos