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 28-06-2010
Chewitta Chewitta is offline
Miembro
 
Registrado: jul 2008
Posts: 13
Poder: 0
Chewitta Va por buen camino
Ayuda Importando Excel

Hola...

Tendo una duda estoy importando un archivo de excel a firebird pero cuando me quiero cambiar de hoja, me marca error en el metodo Activate de la clase Range, el codigo q estoy usando es el siguiente:

Código Delphi [-]
  if EdtContacto.Text <> '' then
  begin
    if not FileExists(EdtContacto.Text) then
    begin
      Application.MessageBox(pchar(format('Error 001: No se encontró el archivo %s.'#13'Capture un archivo válido y vuelva a intentarlo.', [EdtContacto.Text])), pchar(self.Caption), MB_OK + MB_ICONERROR);
      EdtContacto.SetFocus;
      Exit;
    end;
  end;
  memLog.Lines.Add('Inicio de lectura de archivo de Prensa...');


  try

    Excel := CreateOleObject('Excel.Application');
    Excel.Workbooks.Open(EdtContacto.Text);

    Sheet := Excel.Workbooks[ExtractFileName(EdtContacto.Text)].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;

    CdsPrensa:=Tclientdataset.create(nil);

    for i:=1 to CantRow do
    begin
      for j:=1 to CantCol do
      begin

        if i = 1 then
        begin
          campoLetras:=TStringField.Create(self);

          with campoLetras do
          begin
            FieldName:=RangoMatriz[i,j];
            DataSet:=CdsPrensa;

            if j = CantCol  then
            begin
              CdsPrensa.Close;
              CdsPrensa.CreateDataSet;
            end;
          end;

        end
        else
        begin
          if i <> o then
            CdsPrensa.Append;
          CdsPrensa.Fields.Fields[j-1].AsString  :=RangoMatriz[i,j];
        end;
        o:= i;
      end;
    end;//for
    
    CdsPrensa.Post;
    dtsPrensa.DataSet:=CdsPrensa;
    aView.DataController.Filter.Clear;
    aView.DataController.DataSource := dtsPrensa;
    aview.BeginUpdate;
    RemoveAllColumns(aView);
    aView.DataController.CreateAllItems;
    aView.EndUpdate;
    memLog.Lines.Add('Termino la carga de Televisión...');

{$ENDREGION}

  memLog.Lines.Add('Inicio de lectura de archivo de Televisión...');

  try
    Excel := CreateOleObject('Excel.Application');
    Excel.Workbooks.Open(EdtContacto.Text);

    Sheet := Excel.Workbooks[ExtractFileName(EdtContacto.Text)].WorkSheets[2];
    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; "Aqui me marca el error"

    CantRow := Excel.ActiveCell.Row;
    CantCol := Excel.ActiveCell.Column;

    RangoMatriz := Excel.Range['A1', Excel.Cells.Item[CantRow,CantCol]].Value;

    Cdstele:=Tclientdataset.create(nil);

    for i:=1 to CantRow do
    begin
      for j:=1 to CantCol do
      begin

        if i = 1 then
        begin
          campoLetras:=TStringField.Create(self);

          with campoLetras do
          begin
            FieldName:=RangoMatriz[i,j];
            DataSet:=CdsTele;

            if j = CantCol  then
            begin
              cdsTele.Close;
              cdsTele.CreateDataSet;
            end;
          end;

        end
        else
        begin
          if i <> o then
            cdsTele.Append;
          cdsTele.Fields.Fields[j-1].AsString  :=RangoMatriz[i,j];
        end;
        o:= i;
      end;
    end;//for

    cdsTele.Post;
    dtsTelevision.DataSet:=cdsTele;
    aViewTv.DataController.Filter.Clear;
    aViewTv.DataController.DataSource := dtsTelevision;
    aviewTv.BeginUpdate;
    RemoveAllColumns(aViewTv);
    aViewTv.DataController.CreateAllItems;
    aViewTv.EndUpdate;


  finally
    memLog.Lines.Add('Termino la carga de Televisión...');
    Excel.Quit;
end;

Les agradezco de antemano su ayuda... pasa la informacion de la primera hoja sin problema y al querer cargar la informacion de la segunda hoja me salta ese error...

Última edición por Caro fecha: 28-06-2010 a las 20:24:41. Razón: etiquetas delphi en el codigo
Responder Con Cita
  #2  
Antiguo 28-06-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Chewitta, por favor utiliza las etiquetas [ delphi] [ /delphi] para que tu codigo se entienda mejor. Sobre tu pregunta, prueba de esta forma.

Código Delphi [-]

Book : OLEVariant;
..............................................
try

    Excel := CreateOleObject('Excel.Application');
    Book := Excel.Workbooks.Open(EdtContacto.Text);

    Sheet := Book.WorkSheets[1]; 
    Sheet.Activate;

    CantRow := Excel.ActiveCell.Row;
    CantCol := Excel.ActiveCell.Column;

    RangoMatriz := Excel.Range['A1', Excel.Cells.Item[CantRow,CantCol]].Value;

    ......................................................
    .........................................................
  try
    //Si es sobre el mismo documento, estas dos lineas estan demas 
    //Excel := CreateOleObject('Excel.Application');
    //Excel.Workbooks.Open(EdtContacto.Text);

    Sheet := Book.WorkSheets[2]; 
    Sheet.Activate;
    
    CantRow := Excel.ActiveCell.Row;
    CantCol := Excel.ActiveCell.Column;

    RangoMatriz := Excel.Range['A1', Excel.Cells.Item[CantRow,CantCol]].Value;

    Cdstele:=Tclientdataset.create(nil);

    for i:=1 to CantRow do
    begin
    ....................................................
    ....................................................


Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 28-06-2010
Chewitta Chewitta is offline
Miembro
 
Registrado: jul 2008
Posts: 13
Poder: 0
Chewitta Va por buen camino
Muchas gracias por contestar caro..

ya cambie el codigo, solamente q no ma trae el rango, ya que en el cantRow, y CantCol, me lo toma con valor de 1 en los 2 campos???


y pues me pone error de argumento...
Responder Con Cita
  #4  
Antiguo 29-06-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por Chewitta Ver Mensaje
ya cambie el codigo, solamente q no ma trae el rango, ya que en el cantRow, y CantCol, me lo toma con valor de 1 en los 2 campos???
Hola de nuevo, puedes hacer un ejemplo solo con la parte de importar a excel y el documento con el que estas probando y lo subes, así podremos ver mejor donde esta el error.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #5  
Antiguo 29-06-2010
Chewitta Chewitta is offline
Miembro
 
Registrado: jul 2008
Posts: 13
Poder: 0
Chewitta Va por buen camino
Hola... caro

gracias por responder pero ya encontre lo que tenia mal... en el archivo de excel tengo q dejarlo en el ultimo registro para que me traiga el rango de la informacion. y ya me funciono.. de antemano gracias...
Responder Con Cita
  #6  
Antiguo 29-06-2010
Chewitta Chewitta is offline
Miembro
 
Registrado: jul 2008
Posts: 13
Poder: 0
Chewitta Va por buen camino
Hola !!! caro

gracias por responder pero ya encontre lo que tenia mal... en el archivo de excel tengo q dejarlo en el ultimo registro para que me traiga el rango de la informacion. y ya me funciono..
Responder Con Cita
  #7  
Antiguo 29-06-2010
Chewitta Chewitta is offline
Miembro
 
Registrado: jul 2008
Posts: 13
Poder: 0
Chewitta Va por buen camino
Hola! caro


agradezco la atencion y ya encontre mi error el archivo de excel, debo dejarlo en el ultimo registro para que me tome el rango...


de antemano gracias por todo... son super
Responder Con Cita
  #8  
Antiguo 08-08-2012
emeceuy emeceuy is offline
Miembro
 
Registrado: jun 2003
Ubicación: Uruguay
Posts: 122
Poder: 21
emeceuy Va por buen camino
Hola como estan !

Una consulta, puedo trabajar leyendo o escribiendo archivos de Excel.

El problema que tengo está en la lectura. Puedo leer todo ok, pero el problema está en que el archivo que leo queda como abierto, y luego si intento abrirlo por fuera del programa me dice solo lectura, etc, etc, y tengo que terminar cerrando el proceso desde el administrador de tareas.

Me he dado cuenta que en mi programa no he colocado Excel.Quit. Pero cuando coloco esto me da el siguiente error: "Variant does not reference an automation object.".

Que estoy haciendo mal?

PD: utilizo Windows XP y Delphi 6, y tengo Office 2007 instalado.

Muchas gracias desde ya! Saludos. Marcelo.
__________________
Marcelo C.

Última edición por emeceuy fecha: 08-08-2012 a las 06:17:00.
Responder Con Cita
  #9  
Antiguo 08-08-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Puedes poner un resumen del código que utilizas para abrir y leer el archivo? Por ejemplo, ¿dónde declaras el variant, cómo abres el archivo?

// Saludos
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
Problemas importando archivo Excel duilioisola Servers 2 19-09-2007 18:31:46
Ayuda con Excel y .NET Endor2 .NET 3 07-02-2007 23:36:13
Importando BLOBs con IBEASY+ kurroman Firebird e Interbase 0 22-01-2007 15:38:27
Importando a Access de Oracle. AngelMarvin Tablas planas 1 04-01-2005 08:58:35
ayuda de exportacion de mysql a excel Andrea Martinez PHP 3 30-11-2004 08:03:32


La franja horaria es GMT +2. Ahora son las 15:55:36.


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