Ver Mensaje Individual
  #1  
Antiguo 10-04-2017
marcelocarazas marcelocarazas is offline
Miembro
NULL
 
Registrado: jul 2014
Posts: 27
Reputación: 0
marcelocarazas Va por buen camino
importar excel datos numericos

Buenas tardes amigos del foro,
estoy trabajando con importar archivos excel utilizo el siguiente código

Código Delphi [-]

const
  xlCellTypeLastCell = $0000000B;
var
 Excel, Sheet: OLEVariant;
 CantRow, CantCol, i, j, k, l : Integer;
 RangoMatriz : Variant;
 fileName, nro_carga, cadena, vde, vdeCod, MspAPP : String;
 LastCell : Variant;
begin
  openDialog1 := TOpenDialog.Create(self);
  
  openDialog1.InitialDir := GetCurrentDir;
  
  openDialog1.Options := [ofAllowMultiSelect];
  OpenDialog1.Filter := '*.xlsx';
  openDialog1.Filter :=  'Archivos Excel 2013|*.xlsx|Archivos Excel 2007|*.xls';
  proLimpiarGrid(sgDetalle);
  if not openDialog1.Execute
  then ShowMessage('La Operacion  Se cancelo')
  else
  begin
  
    l := 1;
    for i := 0 to openDialog1.Files.Count-1 do
    begin

      Excel := CreateOleObject('Excel.Application');
      fileName:= openDialog1.Files[i];
      Excel.Workbooks.Open(FileName);
      Sheet := Excel.Workbooks[ExtractFileName(FileName)].WorkSheets[1];
      Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
      CantRow := Excel.ActiveCell.Row;
      CantCol := Excel.ActiveCell.Column;
      RangoMatriz := Excel.Range['A1', Excel.Cells.Item[CantRow,CantCol]].Value;
      nro_carga := RangoMatriz[8, 1];
      //j := 1;
      with sgDetalle do
      begin
        for j:= 18 to CantRow-1 do
        begin

          Cells[0, l] := IntToStr(j-1);
          cadena := RangoMatriz[j, 1];
          vde := Trim(UpperCase(MidStr(cadena, pos('-', cadena)+1, Length(cadena))));
          vdeCod := Trim(UpperCase(MidStr(cadena, 1, pos('-', cadena)-2)));

          Cells[1, l] := vde;
          Cells[2, l] := vdeCod;

          cadena := RangoMatriz[j, 2];
          vde := Trim(UpperCase(MidStr(cadena, pos('-', cadena)+1, Length(cadena))));
          vdeCod := Trim(UpperCase(MidStr(cadena, 1, pos('-', cadena)-2)));

          Cells[3, l] := vde;
          Cells[4, l] := vdeCod;

          cadena := nro_carga;
          vde :=  Trim(UpperCase(MidStr(cadena, pos(':', cadena)+1, Length(cadena))));

          Cells[5, l] := vde;
          Cells[6, l] :=  RangoMatriz[j, 5] + '0' ; // aqui no funciona no encuentra nada
          
          Inc(l);
    
   RowCount := RowCount + 1;
   end;

    end;

  end;
end;
  
  openDialog1.Free;
   Excel.Quit
  
  
end;

El problema que tengo es que el archivo excel tiene formato de numeros enteros y reales, al momento de pasarlo al stringgrid no me muestra nada es como no lo reconociera, con las cadenas de texto esta normal funciona bien pero con los numeros no funciona. No se que que estara mal alguien podria ayudarme. Gracias y saludos
Responder Con Cita