Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-09-2014
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Problema leyendo planilla excel

Estimados.

Estoy intentando leer una planilla excel que tiene varias hojas de las cuales solo necesito los datos de una sola hoja.

He sacado el siguente codigo de un post anterior:
Código Delphi [-]
const
  xlCellTypeLastCell = $0000000B;
var
 Filename : string;
 Excel, Sheet: OLEVariant;
 CantRow, CantCol, i, j : Integer;
 RangoMatriz: Variant;
begin

  OpenDialog.Execute();

  FileName := OpenDialog.FileName;
  Excel := ComObj.CreateOleObject('Excel.Application');
  Excel.Workbooks.Open(FileName);

  Sheet := Excel.Workbooks[ExtractFileName(FileName)].WorkSheets[1];
  Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; <----- error

  Excel.Workbook.Worksheets['LISTA']; <------- Hoja que me interesa
  CantRow := Excel.ActiveCell.Row;
  CantCol := Excel.ActiveCell.Column;

Me da error cuando intenta activar, dicha linea es necesaria ??

Desde ya se agradecen las sugerencias.

Saludos
Responder Con Cita
  #2  
Antiguo 17-09-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.457
Poder: 20
newtron Va camino a la fama
Hola.

Yo para leer un campo de una hoja de excel haria lo siguiente:

Código Delphi [-]
sContenido := Excel.WorkBooks[1].Worksheets[Hoja].Cells[N,M];

donde Hoja es el número de hoja N es el número de fila y M el número de columna.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 17-09-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
lbidi,

Cita:
Empezado por lbidi
...leer una planilla Excel que tiene varias hojas de las cuales solo necesito los datos de una sola hoja...


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

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
   xlCellTypeLastCell = $0000000B;

var
   FileExcel : String;
   Excel, WrkS : OLEVariant;
   Rows, Cols, i, j : Integer;
   MatrixExcel : Array of Array of Variant;
   MspAPP : String;
   LastCell : Variant;

begin

  OpenDialog1.Filter := 'Excel files|*.xls*';

  if OpenDialog1.Execute then
     FileExcel := OpenDialog1.FileName
  else
     Exit;

  try

     try
        Excel := GetActiveOleObject('Excel.Application');
     except
        Excel := CreateOleObject('Excel.Application');
     end;

     Excel.DisplayAlerts := False;
     Excel.Visible := False;

     Excel.Workbooks.Open(FileExcel);

     WrkS := Excel.Worksheets[1];

     // Obtiene el valor de la última celda de la hoja activa de Excel
     Wrks.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
     LastCell := Excel.ActiveCell.Value;
     MspApp := Format('El valor de la última celda activa de Excel es : %s',[LastCell]);
     MessageDlg(MspApp,mtInformation,[mbOK],0);

     // Obtiene la cantidad de filas y columnas de una hoja de Excel por la última celda activa
     Rows := Excel.ActiveCell.Row;
     Cols := Excel.ActiveCell.Column;

     // Otra forma de obtener la cantidad de filas y columnas de una hoja de Excel
     Rows := WrkS.UsedRange.Rows.Count;
     Cols := WrkS.UsedRange.Columns.Count;

     SetLength(MatrixExcel,Rows,Cols);

     for i := 1 to Rows do
        for j := 1 to Cols do
           MatrixExcel[i-1,j-1] := WrkS.Cells[i, j].Value;

     MspApp := Format('Creada Matrix de Elementos de Excel : Rows %d y Cols %d',[Rows, Cols]);
     MessageDlg(MspApp,mtInformation,[mbOK],0);

  finally

     Excel.Quit;
     Excel := Unassigned;
     WrkS := Unassigned;
     Finalize(MatrixExcel);

  end;

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, genera una matriz dinámica con los datos de una hoja de Excel 2010 por medio de Automatización en Excel.

Revisa esta información
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 17-09-2014 a las 11:29:10.
Responder Con Cita
  #4  
Antiguo 17-09-2014
Avatar de lbidi
lbidi lbidi is offline
Miembro
 
Registrado: oct 2003
Ubicación: Montevideo- URUGUAY
Posts: 417
Poder: 21
lbidi Va por buen camino
Muchas gracias Nelson, justo lo que necesitaba.

Saludos cordiales.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Leer Planilla de Excel segun una plantilla Chaja Servers 1 11-02-2014 22:14:16
carga planilla excel pruz Servers 1 17-12-2011 23:10:40
Generar planilla en excel Paulao Varios 0 04-08-2011 14:52:41
Problema con ADO leyendo excel RICTAPIA5 Conexión con bases de datos 2 26-01-2011 19:09:04
Como cargo una planilla excel pruz OOP 3 11-07-2007 11:36:55


La franja horaria es GMT +2. Ahora son las 00:26:45.


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