Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 28-05-2008
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 axlrafael, si necesitas desde el rango F13:Q39, en Range le dices que comience en F13 y cambias en tu ciclos for la cantidad de columnas y filas.

Código Delphi [-]
RangoMatriz := Excel.Range['F13', Excel.Cells.Item[CantRow,CantCol]].Value;
 
  for i:=1 to CantRow-12 do
   begin
    for j:=1 to CantCol-5 do
     begin
      Showmessage(RangoMatriz[i,j]);
      //haces todo lo que necesites hacer
     end;
   end;//for

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
  #22  
Antiguo 28-05-2008
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 felipe88 Ver Mensaje
la pregunta del millon sigue siendo, una vez tenga este problema solucionado que dll y bpl necesito para el instalador...
Hola Felipe88, ADO utiliza MDAC, que viene instalado en el sistema operativo (Windows XP, Millenium, 2000....). Pero si tu aplicación estara instalada en Windows 95 o 98, si necesitas redistribuir e instalar MDAC.

Mas caritas

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.

Última edición por Caro fecha: 28-05-2008 a las 15:29:41.
Responder Con Cita
  #23  
Antiguo 28-05-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
Hola Felipe88, ADO utiliza MDAC, que viene instalado en el sistema operativo (Windows XP, Millenium, 2000), pero si es Windows 95 y 98, si necesitas redistribuir e instalar MDAC.

Mas caritas

Saluditos
Gracias Caro, eso me tranquiliza mas...
__________________
Web
Responder Con Cita
  #24  
Antiguo 28-05-2008
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
Tengo una pregunta

Hola a todos, estoy leyendo todas las hojas de mi documento de excel, pero si encuentra una hoja vacía me sale un Access Violation al intentar leer la primera celda, como puedo verificar si una hoja esta vacía y asi no leerla, muchísimas gracias por adelantado.

Axrafael, para que no sea muy estatico, puedes obtener también las filas y columnas de tu rango y quedaria asi.

Código Delphi [-]
var
 .....
 CantRowRango, CantColRango, i, j : Integer;
 RangoMatriz: Variant;
 Rango : OleVariant;
begin
  ......................

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

  Rango := Excel.Range['F13', 'Q39'];
 
  RangoMatriz := Rango.Value;
 
  CantRowRango := Rango.Rows.Row;
  CantColRango := Rango.Columns.Column;

  for i:=1 to (CantRow-CantRowRango)+1 do
   begin
    for j:=1 to (CantCol-CantColRango)+1 do
     begin
      //
     end;
   end;//for

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
  #25  
Antiguo 28-05-2008
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
Cita:
Empezado por Caro Ver Mensaje
Hola a todos, estoy leyendo todas las hojas de mi documento de excel, pero si encuentra una hoja vacía me sale un Access Violation al intentar leer la primera celda, como puedo verificar si una hoja esta vacía y asi no leerla, muchísimas gracias por adelantado.
Es raro. Con este código

Código Delphi [-]
var
  ExcelApp, Workbook: OleVariant;
  I: Integer;

begin
  ExcelApp := ComObj.CreateOleObject('Excel.Application');
  Workbook := ExcelApp.Workbooks.Open('C:\ruta\al\documento.xls');

  for I := 1 to WorkBook.Worksheets.Count do
    Memo1.Lines.Add(Workbook.Worksheets[i].Cells[1, 1]);

  ExcelApp.Visible := true;
end;

puedo acceder a la primera celda de cada hoja aun estando vacías.

// Saludos
Responder Con Cita
  #26  
Antiguo 28-05-2008
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 amiguito Roman, ya me funciona utilizando Cells como me indicas, muchísimas gracias . Lo que pasaba es que yo accedía a la celda, como esta en mi codígo casi al principio de este hilo.

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
  #27  
Antiguo 29-05-2008
axlrafael axlrafael is offline
Miembro
 
Registrado: abr 2008
Posts: 36
Poder: 0
axlrafael Va por buen camino
De nueva cuenta muchisisimas gracias Caro, no sabes como me has ayudado en todo este tiempo, te lo agradesco de corazón, ya te debo miles .

Sobre tu otro código, voy a checarlo, porque con el anterior me sirve mucho, de todas maneras lo tomare en cuenta.

Saludos y suerte a todos con sus proyectos.
Responder Con Cita
  #28  
Antiguo 17-06-2008
Tachiquin Tachiquin is offline
Registrado
 
Registrado: jun 2008
Posts: 1
Poder: 0
Tachiquin Va por buen camino
Smile auxiliooooo.... yo tambien ando perdida, tengo que hacer un trabajo parecido,

tengo que abrir archivos de word y de excel y mostrar la informacion en un programa en delphi, tambien guardar datos en archivos de word y excel, pueden decirme con que componentes, como se manejan parametros, estoy en delphi 7
Responder Con Cita
  #29  
Antiguo 15-07-2008
ledesmarc ledesmarc is offline
Miembro
 
Registrado: jun 2008
Posts: 24
Poder: 0
ledesmarc Va por buen camino
Excel ADO

Cita:
Empezado por roman Ver Mensaje
También puedes usar los componentes ADO. Aquí hay detalles de cómo usarlos para acceder a una hoja de Excel.

// Saludos
Roman muy buena tu info, pero tengo un problema cuando quiero importar desde el excel (usando Ado) lo hace bien cuando se trata de una columna que sean todos del mismo tipo para mi caso(son todos numeros) el tema es que cuando en la columna hay mesclados numeros y letras en una misma celda, la importacion se corta (osea importa hasta esa celda)y la verdad me he cansado de buscar pero no encuentro el porque.
Te agredecere cualquier sugerencia
Saludos.
Marcos
Responder Con Cita
  #30  
Antiguo 21-08-2008
Avatar de maxid
maxid maxid is offline
Miembro
 
Registrado: ene 2006
Posts: 38
Poder: 0
maxid Va por buen camino
Usa adoconection

Usa un componente AdoConection y un ADODataSet, en la cadena de conexion pone todo esto y en source el archivo excel.

ADOConnection1.ConectionString:= Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=F:\Company\Solicitud\Solicitud.xls;Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDBatabase Password="";Jet OLEDB:Engine Type=35;Jet OLEDBatabase Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDBon't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False


Tambien podes poner como una constante y con format(cte_cadenadeconxion,[farchivoexcel])
y trabajas como una tabla y grillas normal, incluso podes acceder a los campos con fieldbyname si sabes como se llaman de antemano.
Enlaza en el AdoConection con ADODataSet y en ADODataSet1.CommandText tenes las pestañas del archivo
__________________
Maestro no solo es el que conoce sino el que comparte lo que sabe.
Responder Con Cita
  #31  
Antiguo 22-08-2008
ledesmarc ledesmarc is offline
Miembro
 
Registrado: jun 2008
Posts: 24
Poder: 0
ledesmarc Va por buen camino
Muchas Gracias por la Data, ahora lo pruebo..

Saludos
Responder Con Cita
  #32  
Antiguo 15-09-2008
Rancy Rancy is offline
Miembro
 
Registrado: may 2008
Posts: 17
Poder: 0
Rancy Va por buen camino
Hola
Tengo un problema con el código que escribió Caro en la primera pagina (era el siguiente):

Código Delphi [-]
const
  xlCellTypeLastCell = $0000000B;
var
 Excel, Sheet: OLEVariant;
 CantRow, CantCol, i, j : Integer;
 RangoMatriz: Variant;
begin
  FileName := 'C:\Archivo.xls';
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Open(FileName);
 
  Sheet := Excel.Workbooks[ExtractFileName(FileName)].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;
 
  for i:=1 to CantRow do
   begin
    for j:=1 to CantCol do
     begin
      Showmessage(RangoMatriz[i,j]);
      //haces todo lo que necesites hacer
     end;
   end;//for

Concretamente mi problema esta en esta línea:
Código Delphi [-]
Excel := CreateOleObject('Excel.Application');

El error es Undeclared identifier 'CreateOleObject'

Además, a intervalos regulares me aparece el mensage de error:
Unable to cast object of type 'Borland.Delphi.VariantType' to type 'Borland.Delphi.Unit'

Y no se como solucionar ninguna de las dos cosas. Tal vez sea algo muy básico, ya que a los demas que han probado el código les ha funcionado perfectamente. Alguna idea de por dónde puede ir el error?

Mi intención es leer el documento excel para luego ir guardando la información listada. Uso delphi 2007, por si es de utilidad saberlo.
Sinceramente estoy bastante perdido.

Gracias por adelantado.
Responder Con Cita
  #33  
Antiguo 15-09-2008
Rancy Rancy is offline
Miembro
 
Registrado: may 2008
Posts: 17
Poder: 0
Rancy Va por buen camino
Ok, ya suponía que estaba cometiendo un error muy básico

Me faltaba completar los "uses"! Vaya noob estoy hecho.

Aunque el error:
Unable to cast object of type 'Borland.Delphi.VariantType' to type 'Borland.Delphi.Unit'

Sigue apareciendo... Es bastante molesto, aunque el código se compila sin problemas.

Si alguien sabe como puedo solucionarlo, se lo agradecería.
Responder Con Cita
  #34  
Antiguo 09-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Post Importar archivo excel a un stringgrid LAZARUS IDE

Hola que tal amigos espero que me puedan ayudar con lo siguiente:
Bueno quiero abrir un archivo excel en un stringgrid con Lazarus IDE encontre algo similar en este foro pero me marca un error les enseño el codigo:

Código Delphi [-]
unit cf_acceso;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
  Buttons,comobj,variants;
........
procedure TForm1.BitBtn1Click(Sender: TObject);
const
  xlCellTypeLastCell = $0000000B;
var
 Excel, Sheet,Book: OLEVariant;
 CantRow, CantCol, i, j : Integer;
 RangoMatriz: Variant;
 FileName:String;

begin
  FileName:='C:\SISTEMAPLANILLAS\Libro2.xlsx';
  try
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Open(FileName);
  ShowMessage(FileName);
  Sheet := Excel.Workbooks[ExtractFileName(FileName)].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;

  for i:=1 to CantRow do
   begin
    for j:=1 to CantCol do
     begin
      Showmessage(RangoMatriz[i,j]);
      //haces todo lo que necesites hacer
     end;
   end;//for
   finally
   Excel.Quit; //Aquí cerramos la hoja de Excel
   end;
end;

Bien es en estas líneas de codigo en las que me aparece el error:

Código Delphi [-]
Sheet := Excel.Workbooks[ExtractFileName(FileName)].WorkSheets[1];

Error: Incompatible types: got "AnsiString" expected "LongInt"

Código Delphi [-]
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
RangoMatriz := Excel.Range['A1',Excel.Cells.Item[CantRow,CantCol]].Value;

Error: Incompatible types: got "Constant String" expected "LongInt"



Bueno intente esto:

Código Delphi [-]
Sheet := Excel.Workbooks[StrToInt(ExtractFileName(FileName))].WorkSheets[1];
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; 
RangoMatriz:=Excel.Range[StrToInt('A1'),Excel.Cells.Item[CantRow,CantCol]].Value;

Ejecuta normal pero al dar click en el boton aparece el mensaje:
El proyecto a lanzado una excepcion 'EOLeExceptionEOLeException' con el mensaje:
no se encontro "??????x.xlsx" Comprube ortografia y verificar si la ubicación es correcta.

La ruta es totalmente correcta pero no se lo que pasa por favor si me pueden ayudar con esto.
Gracias

Última edición por roman fecha: 10-01-2012 a las 00:18:02. Razón: Corregir etiquetas [delphi]
Responder Con Cita
  #35  
Antiguo 09-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración.

Responder Con Cita
  #36  
Antiguo 10-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Ok Casimiro ya esta dame una sugerencia pues en que estoy fallando estoy usando Lazarus IDE
Responder Con Cita
  #37  
Antiguo 10-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Mira si te sirve alguno de los enlaces de abajo de esta página, justo al final.
Responder Con Cita
  #38  
Antiguo 10-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Lo estoy trabajando en lazarus IDE - windows xp y solo aparece esos errores y la verdad no logro solucionarlo =(
Responder Con Cita
  #39  
Antiguo 10-01-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
no se encontro "??????x.xlsx" Comprube ortografia y verificar si la ubicación es correcta.
Puede que la ruta que le has indicado no sea tan correcta.
Responder Con Cita
  #40  
Antiguo 10-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
La ruta es correcta la comprobe creo que el error marca por que le puse esto:
Código Delphi [-]
StrToInt(ExtractFileName(FileName))
Pero si quito StrToInt me marca lo siguiente:
Código Delphi [-]
Error: Incompatible types: got "AnsiString" expected "LongInt"
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
importar datos de excel a firebird Choclito Varios 6 06-02-2007 02:26:10
como importar informacion a mi base de datos desde un disket ibbeth Firebird e Interbase 13 20-01-2007 10:18:38
Importar desde Excel Lucas_diaz1810 Conexión con bases de datos 5 03-11-2006 18:15:26
Importar desde Excel LucasArgentino SQL 1 24-12-2003 17:33:26
importar datos de excel a mi aplicacion squenda Varios 2 11-12-2003 03:33:32


La franja horaria es GMT +2. Ahora son las 05:51:12.


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