Ver Mensaje Individual
  #1  
Antiguo 09-05-2014
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Reputación: 14
wolfran_hack Va por buen camino
Question Importar archivo XLS a ListView

Muy buenas, estoy con un problemita que en realidad pueda que paresca tonto pero estoy intentando Importar un Archivos XLS a un ListView en D7 y me encuentro que se queda en un bucle infinito cargando siempre lo mismo, el code lo había encontrado en el foro pero resulto con este problema y no he encontrado algun otro ejemplo similar, tengo instalado Excel 2010, que puede llegar a ser? al calcular Excel.ActiveCell.Row me da 1 y el archivo tiene mas Celdas Activas..

Código Delphi [-]
procedure TfrmMain.CargarArchivo1Click(Sender: TObject);
var
  Excel : Variant;
  i : integer;
  l1 : TListItem;
  filename : string;
  lineas : integer;
begin
  i:=2;
  open.FileName:='';
  open.Execute;
  filename:=open.FileName;
  if filename <> '' then
  begin
//***** Creamos el Objeto Ole *****//
  try
    Excel := CreateOleObject('Excel.Application');
  except
    Excel.Quit;
    showmessage('No se pudo crear el Objecto Excel o se produjo algún error.');
    raise;
  end;
//***** Asignamos el archivo a abrir *****//
  Excel.Workbooks.Open(filename);
//***** Limpiamos la lista *****//
  listview1.Items.Clear;
//***** Obtenemos la ultima linea del archivo excel *****//
  try
  begin
    Excel.Selection.End[xlDown].Select;
    lineas := Excel.ActiveCell.Row;
    Excel.Selection.End[xlUp].Select;
  end;
  except
  begin
    ShowMessage('No se ha podido localizar la última línea del archivo.');
    raise;
  end;
  end;
//***** Llenamos el ListView con los datos del archivo excel *****//
  while (i <= lineas) do  //Excel.ActiveCell.Row te calcula la ultima línea del archivo
  begin
    ShowMessage(inttostr(Excel.ActiveCell.Row));
    //***** Acceso a los datos de las celdas *****//
    L1:=ListView1.Items.Add;
    L1.Caption:=inttostr(ListView1.Items.Count);
    L1.SubItems.Add(Excel.Cells[i,1].Value);
    L1.SubItems.Add(Excel.Cells[i,2].Value);
    L1.SubItems.Add(Excel.Cells[i,3].Value);
    i:=i+1;
  end;
//***** Cerramos el Excel *****//
    Excel.quit;
    ///Confirmar.Enabled:=true;
    //Limpiar.Enabled:=true;
  end;
end;
Responder Con Cita