Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Importar datos de Excel para Cronograma de Transporte en Delphi XE7 (https://www.clubdelphi.com/foros/showthread.php?t=87626)

andresop 01-02-2015 03:49:48

Importar datos de Excel para Cronograma de Transporte en Delphi XE7
 
Buenas noches.
tengo un excel que me entrega una pagina de gps con los recorridos de unos buses que contienen el tiempo entre los puntos del recorrido y sus nombres. me encuentro estancado en como importar el excel a delphixe7 para poder sacar la diferencia de tiempo entre los puntos y poder compararlos con un valor fijo para decir si el tiempo fue el adecuado o no. y luego el cliente de un click e imprimir el reporte
les quedaria eternamente agradecido con la ayuda
ya tengo el entorno grafico y los botones pero no encuentro como subir el excel para modificar e imprimir

nlsgarcia 01-02-2015 13:34:55

andresop,

Cita:

Empezado por andresop
...como importar el Excel a Delphi XE7 para poder sacar la diferencia de tiempo entre los puntos (Cronograma de Transporte) y poder compararlos con un valor fijo...

:rolleyes:

¡Bienvenido al Club Delphi! :D

Te sugiero revisar la Guía de estilo de los foros, recomendada a todos los nuevos ingresos al Club Delphi.

Revisa esta información:
Espero sea útil :)

Nelson.

duilioisola 02-02-2015 13:47:49

Esto funciona en Delphi 6.
Ten en cuenta que donde se ejecute debe estar el Excel instalado.
También puede haber diferencias con las diferentes versiones de Excel.
Además de hacerlo así, quizás puedas acceder a estos datos generando un ODBC y leyendo como si fuera una tabla de una base de datos.

Código Delphi [-]
procedure TFMRegInventario.TBDescargaExcelClick(Sender: TObject);
var
  Excel : variant;
  i, id_a : integer;
  Articulo, UnidadesExcel, Archivo : string;
  Existe, Cancelar : boolean;
  Unidades : double;
begin
  inherited;
  Cancelar := False;
  OpenDialog1.FilterIndex := 1;
  OpenDialog1.InitialDir := REntorno.DirectorioLector;
  if OpenDialog1.Execute then
  begin
     Archivo := OpenDialog1.FileName;
     DMRegInventario.NotasLote := False;
     try
        try
           Excel := CreateOleObject('Excel.Application');
           Excel.WorkBooks.Open(Archivo);

           for i := 1 to Excel.Rows.CurrentRegion.Rows.Count do
           begin
              if (not Cancelar) then
              begin
           // Obtengo datos de las celdas
                 try
                    Articulo := Excel.Range['a' + IntToStr(i)].Value;
                 except
                    Articulo := '';
                 end;
                 try
                    UnidadesExcel := Excel.Range['b' + IntToStr(i)].Value;
                 except
                    UnidadesExcel := '0';
                 end;

                 if (Articulo > '') then
                 begin
            // Trasnformo datos Excel a tipo de datos Delphi
                    id_a := DameIDArticulo(Articulo);
            // StrToFloatDef = StrToFloat + Valor por defecto si falla
                    Unidades := StrToFloatDef(UnidadesExcel, 0);
                    Precio := StrToFloatDef(PrecioExcel, 0);
                    if (id_a > 0) then
                    begin
                       // Utilizo datos
             // ...
                    end
                    else
                    begin
                       if (MessageDlg(Format(_('No existe Ariculo' + #13 + 'Código: %s - Stock: %s' + #13 + '¿Desea continuar?'), [Articulo, UnidadesExcel]), mtWarning, [mbYes, mbNo], 0) = mrNo) then
                          Cancelar := True;
                    end;
                 end;
              end;
           end; {for}
        except
           on e: Exception do
              MessageDlg(_('ERROR Imposible conectar con Excel') + #13 + e.Message, mtError, [mbOK], 0);
        end;
     finally
        Excel.Quit;
     end;
  end;
end;


La franja horaria es GMT +2. Ahora son las 21:14:34.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi