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
  #41  
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.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Evidentemente, no puedes convertir a integer un cadena de texto.

¿Y exactamente en qué línea es eso?, ¿has seguido el programa con del depurador?
Responder Con Cita
  #42  
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
Claro que si voy a pegar nuevamente el código y de color rojo las líneas donde aparece el error:
Código Delphi [-]
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;

Como comente le agregue StrToInt funca normal pero ya se perdería pues por que ya pasa a integer.
Como podre solucionarlo...
Responder Con Cita
  #43  
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
Las variables que utilizo:
Código Delphi [-]
const
  xlCellTypeLastCell = $0000000B;
var
 Excel, Sheet,Book: OLEVariant;
 CantRow, CantCol, i, j : Integer;
 RangoMatriz: Variant;
 FileName:String;

La primera línea en que me marca lo siguiente:
Código Delphi [-]
Sheet := Excel.Workbooks[ExtractFileName(FileName)].WorkSheets[1];
Error: Incompatible types: got "AnsiString" expected "LongInt"

La segunda igual:
Código Delphi [-]
RangoMatriz := Excel.Range['A1',Excel.Cells.Item[CantRow,CantCol]].Value;
Error: Incompatible types: got "Constant String" expected "LongInt"

Pienso que el error es por:
ExtractFileName(FileName) y 'A1'
Responder Con Cita
  #44  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Hola de nuevo alguien que me pueda decir en que estoy errando no quiero usar otro componente por que la verdad se que se puedo hacer lo que quiero yo
Responder Con Cita
  #45  
Antiguo 16-01-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
Quizá no seas tú quien yerre sino Lázarus o FP. Un código similar al que pones corre sin problemas en Delphi, pero parece que FPC no acepta que los índices sean cadenas de caracteres.

El primer error podrías solventarlo usando un índice numérico en lugar del nombre para obtener una referencia al libro:

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

El segundo error no veo como pues no habría un equivalente numérico al índice 'A1'. Pero puedes intentar poniendo:

Código Delphi [-]
var
  Celda: OleVariant;
  ...

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

Digo, no sé si funcione, pero nada se pierde con intentar.

// Saludos
Responder Con Cita
  #46  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
Roman usted si que es bueno =)
ahora me aparece un error en esta línea:
Código Delphi [-]
var
 Excel,celda,Sheet: OLEVariant;
 CantRow, CantCol, i, j : Integer;
 RangoMatriz,FileName: Variant;
 //FileName:String;

begin
  FileName:='C:\SISTEMAPLANILLAS\Libro2.xlsx';
  try
  Excel := CreateOleObject('Excel.Application');
  Excel.Workbooks.Open(FileName);
  ShowMessage(FileName);
  Sheet := Excel.Workbooks[1].WorkSheets[1];

y marca este error:
Código Delphi [-]
Invalid argumentispatch
__________________
No lleves tus conocimiento a la tumba, Enseña a otros lo que sabes...
Responder Con Cita
  #47  
Antiguo 16-01-2012
Avatar de jejo1984
jejo1984 jejo1984 is offline
Miembro
NULL
 
Registrado: jun 2011
Posts: 39
Poder: 0
jejo1984 Va por buen camino
El error dice:
Invalid argument: Dispatch
y señala a esta línea:
Sheet := Excel.Workbooks[1].WorkSheets[1];
__________________
No lleves tus conocimiento a la tumba, Enseña a otros lo que sabes...
Responder Con Cita
  #48  
Antiguo 17-01-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
Hola,

Tal parece que esto es una falla de FPC. En este mismo enlace mencionan que el problema se ha resuelto con versiones posteriores, pero parece que no es tan sencillo hacer que la última versión estable de Lázarus trabaje con otra versión de FPC que no sea la 2.4.x. Sin embargo, ahí mismo menciona una versión "snapshot" de Lázarus que utiliza la versión 2.5.1 de FPC.

Instalando esa, he podido ejecutar correctamente un código similar:

Código Delphi [-]
const
  xlCellTypeLastCell = $0000000B;

var
  Excel, Hoja, Rango: OleVariant;
  NumFilas, NumColumnas: Integer;

begin
  Excel := CreateOleObject('Excel.Application');

  try
    Excel.Workbooks.Open('c:\ruta\al\archivo.xlsx');
    Hoja := Excel.Workbooks[1].Worksheets[1];
    Hoja.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;
    NumFilas := Excel.ActiveCell.Row;
    NumColumnas := Excel.ActiveCell.Column;
    Rango := Excel.Range['A1', Excel.Cells.Item[NumFilas, NumColumnas]].Value;

    Showmessage(Rango[1, 1]);
  finally
    Excel.Quit;
  end;
end;

// Saludos
Responder Con Cita
  #49  
Antiguo 12-03-2012
Chaja Chaja is offline
No confirmado
 
Registrado: ago 2004
Ubicación: Mar del Plata
Posts: 238
Poder: 0
Chaja Va por buen camino
Lectura de excel con ADO Campos sin datos

Roman: Hola... te escribo por que estaba buscadno un tema con referencia a la importacion de datos desde excel, y me encuentro con un tema. Usa la forma de hacerlos con los ADO comp. uso como se ha explicado en el foro y todo eso y se hace bien. todo bien, hasta que me sucede lo siguiente. No se por que algunos valors de la tabla de excel me los trae vacios, concretamenete los que son valores enteros, como controlo eso? la hoja de excel es:
5588/1 Pelota Futbol CLUB 42.00
5589/1 Pelota Futbol Master 42.00
5589/2
Pelota Master Color 42.00
11 Pelota Fox Nº 4 52.00
17 Arco Futbol 1.83 x 1.22 x.60 149.00
17/A Arco Futbol 2.40 x 1.52 x 0.90 239.00
17/B Arco Futbol 3.02 x 2.07 x 1.18 349.00
18 Pelota Futsala Pro cosida 54.00
20
Silbato fox 40 striker 9.90
21 Collarines x 12 Unidades 18.90
22 Silbato fox 40 dolfin 18.90
23 Silbato Fox Micro C/C 24.90
24 Silbato Fox 40 classic 21.90
24D Silbato Fox 40 clasicc color surt x12 262.00
25 Silbato Fox 40 Pearl 11.90
26 Silbato Fox 40 con cronometro 139.00
27 Silbato fox Shark c/collarin 29.90
28 Collarin Fox x12 69.00

por ejemplo los codigo 11 17 24 25 26 27 28 no me levanta los datos , si el resto pero esos valores no. Para que lo haga debo ir al excel y editar uno por uno para que sea un texto. si son poco no pasa nada, pero como debo importar mas de 1000 lineas se complica.
Alguna sugerencia?

Gracias

Luis Roldan
Mar del Plata
Argentina
Responder Con Cita
  #50  
Antiguo 18-05-2012
Jetzuvely21 Jetzuvely21 is offline
Miembro
NULL
 
Registrado: may 2012
Posts: 22
Poder: 0
Jetzuvely21 Va por buen camino
Hola Jejo, ¿Pudiste solucionar tu problema?. Al parecer solo tienes que indicar la ruta del archivo, el nombre del archivo no.Por eso es que te marca que la ruta está mal. Posteriormente luego seleccionas tu archivo y lo abres.Bueno a mi me resultó asi.

Saludos!
Responder Con Cita
  #51  
Antiguo 18-10-2012
Anel Hernandez Anel Hernandez is offline
Miembro
 
Registrado: mar 2005
Posts: 94
Poder: 20
Anel Hernandez Va por buen camino
Hola,

he tratado de correr el ejemplo de Caro y me da error en la linea:
Código Delphi [-]
Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate;

el error dice 'Error en el metodo Activate de la clase range'.

Si quito la linea, entonces CantRow y CantCol me dan 1 y 1 respectivamente. Que debo hacer?

gracias
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 04:51:17.


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