Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-05-2014
wolfran_hack wolfran_hack is offline
Miembro
 
Registrado: abr 2013
Posts: 97
Poder: 12
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
  #2  
Antiguo 13-05-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
wolfran_hack,

Cita:
Empezado por wolfran_hack
...estoy intentando Importar un Archivos XLS a un ListView en D7...
Te sugiero usar el componente TStringGrid el cual esta mejor adaptado en Delphi para la carga de una hoja de cálculo en Excel.

Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ComObj, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
   Excel, WrkS, WrkB : OLEVariant;
   Row, Col : Integer;
   Rows, Cols : Integer;

begin

   Excel := CreateOleObject('Excel.Application');
   WrkB := Excel.Workbooks.Open(GetCurrentDir+'\TestData.xlsx');

   WrkS := WrkB.Worksheets[1];
   Cols := WrkS.UsedRange.Columns.Count;
   Rows := WrkS.UsedRange.Rows.Count;

   for Row:= 1 to StringGrid1.RowCount do
         StringGrid1.Rows[Row].Clear;

   StringGrid1.FixedRows := 1;
   StringGrid1.FixedCols := 1;
   StringGrid1.RowCount := Rows + 1;
   StringGrid1.ColCount := Cols + 1;

   for Row:= 1 to StringGrid1.RowCount do
      for Col:= 1 to StringGrid1.ColCount  do
         StringGrid1.Cells[Col,Row]:= WrkS.Cells[Row,Col].Value;

   Excel.Quit;

end;

end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32, carga una hoja de cálculo en el componente TStringGrid, como se puede ver en la siguiente imagen:



Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 13-05-2014 a las 18:36:56.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
exportar/importar listview a excel weke Servers 8 18-08-2013 09:38:06
Importar archivo de texto nextor Conexión con bases de datos 4 29-06-2011 17:33:45
Importar Archivo txt a un Recordset LucasArgentino Conexión con bases de datos 1 03-02-2006 19:19:34
importar un archivo txt a un dbmemo jfragueiro Varios 10 23-06-2005 18:47:56
Importar archivo de texto trabuc Varios 3 01-12-2004 11:40:22


La franja horaria es GMT +2. Ahora son las 07:15:51.


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
Copyright 1996-2007 Club Delphi