buenos dias
tengo que pasar un informacion a excel la caracteristica es que se debe pasar en diferentes hojas dependiendo de los datos
codigos 1 y 2 en una hoja
codigo 3 en otra
codigo 4 en otra
entonces hice algo mas o menos asi
Código Delphi
[-] _FilaTitulos := 1;
Excel := CreateOleObject('Excel.Application');
Excel.DisplayAlerts := False;
Excel.WorkBooks.Add(xlWBATWorksheet);
Excel.WorkBooks[1].WorkSheets.add;
Excel.WorkBooks[1].WorkSheets.add;
Excel.WorkBooks[1].WorkSheets[1].Name:='Sheet1';
Excel.WorkBooks[1].WorkSheets[2].Name:='Sheet2';
Excel.WorkBooks[1].WorkSheets[3].Name:='Sheet3';
WorkSheet1 := Excel.WorkBooks[1].WorkSheets['Sheet1'];
WorkSheet2 := Excel.WorkBooks[1].WorkSheets['Sheet2'];
WorkSheet3 := Excel.WorkBooks[1].WorkSheets['Sheet3'];
WorkSheet1.cells[_FilaTitulos,1] := 'Empresa';
WorkSheet1.cells[_FilaTitulos,2] := 'Codigo';
WorkSheet1.cells[_FilaTitulos,3] := 'Cese';
WorkSheet1.cells[_FilaTitulos,4] := 'Trabajador';
WorkSheet1.cells[_FilaTitulos,5] := 'Dcto.Trabajador';
WorkSheet1.cells[_FilaTitulos,6] := 'Empresa';
WorkSheet1.cells[_FilaTitulos,7] := 'Total';
WorkSheet2.cells[_FilaTitulos,1] := 'Empresa';
WorkSheet2.cells[_FilaTitulos,2] := 'Codigo';
WorkSheet2.cells[_FilaTitulos,3] := 'Cese';
WorkSheet2.cells[_FilaTitulos,4] := 'Trabajador';
WorkSheet2.cells[_FilaTitulos,5] := 'Dcto.Trabajador';
WorkSheet2.cells[_FilaTitulos,6] := 'Empresa';
WorkSheet2.cells[_FilaTitulos,7] := 'Total';
WorkSheet3.cells[_FilaTitulos,1] := 'Empresa';
WorkSheet3.cells[_FilaTitulos,2] := 'Codigo';
WorkSheet3.cells[_FilaTitulos,3] := 'Cese';
WorkSheet3.cells[_FilaTitulos,4] := 'Trabajador';
WorkSheet3.cells[_FilaTitulos,5] := 'Dcto.Trabajador';
WorkSheet3.cells[_FilaTitulos,6] := 'Empresa';
WorkSheet3.cells[_FilaTitulos,7] := 'Total';
i1:= _FilaTitulos + 1;
i2:= _FilaTitulos + 1;
i3:= _FilaTitulos + 1;
qryConsumos.First;
while not qryConsumos.Eof do
begin
if (Izquierda(qryConsumosOtro.AsString,1) = '1') or (Izquierda(qryConsumosOtro.AsString,1) = '2') Then
Begin
WorkSheet1.cells[i1, 1].NumberFormat := '@';
WorkSheet1.cells[i1, 1] := qryConsumosempresa.AsString;
WorkSheet1.cells[i1, 2].NumberFormat := '@';
WorkSheet1.cells[i1, 2] := qryConsumosOtro.AsString;
WorkSheet1.cells[i1, 3] := qryConsumosFechaCese.AsDateTime;
WorkSheet1.cells[i1, 4] := qryConsumosTrabajador.AsString;
WorkSheet1.cells[i1, 5] := qryConsumosDcto.AsFloat;
WorkSheet1.cells[i1, 6] := qryConsumosEmpresa_1.AsFloat;
WorkSheet1.cells[i1, 7] := qryConsumosDcto.AsFloat + qryConsumosEmpresa_1.AsFloat;
inc (i1);
end;
if (Izquierda(qryConsumosOtro.AsString,1) = '3') Then
Begin
WorkSheet2.cells[i2, 1].NumberFormat := '@';
WorkSheet2.cells[i2, 1] := qryConsumosempresa.AsString;
WorkSheet2.cells[i2, 2].NumberFormat := '@';
WorkSheet2.cells[i2, 2] := qryConsumosOtro.AsString;
WorkSheet2.cells[i2, 3] := qryConsumosFechaCese.AsDateTime;
WorkSheet2.cells[i2, 4] := qryConsumosTrabajador.AsString;
WorkSheet2.cells[i2, 5] := qryConsumosDcto.AsFloat;
WorkSheet2.cells[i2, 6] := qryConsumosEmpresa_1.AsFloat;
WorkSheet2.cells[i2, 7] := qryConsumosDcto.AsFloat + qryConsumosEmpresa_1.AsFloat;
inc (i2);
end;
if (Izquierda(qryConsumosOtro.AsString,1) = '4') Then
Begin
WorkSheet3.cells[i3, 1].NumberFormat := '@';
WorkSheet3.cells[i3, 1] := qryConsumosempresa.AsString;
WorkSheet3.cells[i3, 2].NumberFormat := '@';
WorkSheet3.cells[i3, 2] := qryConsumosOtro.AsString;
WorkSheet3.cells[i3, 3] := qryConsumosFechaCese.AsDateTime;
WorkSheet3.cells[i3, 4] := qryConsumosTrabajador.AsString;
WorkSheet3.cells[i3, 5] := qryConsumosDcto.AsFloat;
WorkSheet3.cells[i3, 6] := qryConsumosEmpresa_1.AsFloat;
WorkSheet3.cells[i3, 7] := qryConsumosDcto.AsFloat + qryConsumosEmpresa_1.AsFloat;
inc (i3);
end;
qryConsumos.Next;
ProgressBarXls.Position := ProgressBarXls.Position +1;
end;
WorkSheet1.Cells.Columns.AutoFit;
WorkSheet2.Cells.Columns.AutoFit;
WorkSheet3.Cells.Columns.AutoFit;
WorkBook.SaveAs(fname);
WorkBook.Close(fName);
Excel.Quit;
pero me da error en las ultimas lineas
el mensaje dice EVariantInvalidOpError Invalid variant operation
q estoy haciendo mal?