C/Visual C - ayuda urgente

 
Vista:

ayuda urgente

Publicado por Frank (4 intervenciones) el 18/10/2005 16:14:22
Como puedo acceder desde Visual C a los datos de una hoja de cálculo construida en Excel.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda urgente

Publicado por fernando.gomez (1603 intervenciones) el 18/10/2005 20:54:18
A través la Excel Shared Object Library que tengas instalada (excel.exe, es un componente COM). Tienes que emplear los componentes que Excel te provee (asumo que sabes cómo emplear COM/ActiveX).

Por ejemplo, el componente Application contiene lo que necesitas para echar a andar la aplicación. A través de la propiedad Workbook accedes a un componente tipo Workbooks con el cuál puedes abrir documentos. Este objeto es además un array de objetos Worbook, representando a cada hoja de trabajo. Una vez que obtienes el deseado, obtienes el Worksheet sobre el que vas a trabajar (la propiedad se llama igual y es un array indexado). Del susodicho Worksheet, ya puedes obtener un array de columnas (componente Range) a través de la propiedad Columns; análogamente con Rows obtienes un array de filas (también el componente Range). A través de este componente Range ya haces todas las operaciones pertinentes.

Checa con el Ole View para buscar los IIDs y CLSIDs de los componentes antes mencionados, para que los puedas instanciar desde VC correctamente (ya sabes, CoCreateInstance, etc).

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda urgente

Publicado por FRank (4 intervenciones) el 19/10/2005 00:00:22
Mira yo soy un poco nuevo en esto y a decir verdad estos son mis primeros pasos entrabajo con ficheros me podrias explicar un poco mas porque no entendi mucho, si no es mucha molestia, lo prefiero hacer a traves del correo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda urgente

Publicado por fernando.gomez (1603 intervenciones) el 19/10/2005 04:50:17
Voy a ser honesto contigo. Qué bueno que estés aprendiendo C/C++, pero la verdad para lo que quieres se requiere tener mucho más preparación al respecto. Ya que estés bien ducho en el lenguaje, tendrás que comenzar a aprender diferentes APIs para los sistemas operativos en los que programes. Si programas en Windows, tendrás que aprender el Win32 API. Una vez acabado esto, tendrás que aprender tecnologías un tanto obsoletas, como el Component Object Model (COM), Active Template Library (ATL) y ActiveX.

Esto, por lo siguiente. Office, como la mayoría de los productos de Microsoft, ofrece interfases de programación de aplicaciones (APIs) para que puedas interactuar con sus productos. Así, es posible que puedas enviar e-mails a través de Outlook, emplear el corrector ortográfico de Word, etcétera. Para hacer este tipo de cosas, Microsoft desarrolló algunas tecnologías, llamada COM y ActiveX, que hacen fácil -según Microsoft- la interacción con estos programas. Cualquiera puede crear un componente COM siguiendo las reglas expuestas, y otros proveedores -tú por ejemplo- pueden aprovechar y reutilizar dichos componentes para emplearlo en sus programas.

Así, Office está hecho de componentes que siguen la especificación COM. Para interactuar con Office -y en particular Excel- tendrás que aprender cómo se escriben componentes COM y cómo se utilizan siendo cliente. Y creeme, es un arduo trabajo. COM y ActiveX son APIs horribles, con un diseño muy cargado, lleno de metalenguaje (tienes que crear un archivo IDL/ODL para describir tus objetos, y eso no es C++) y que realmente hacen la vida difícil para el programador. Pero con suerte, todo el esfuerzo se paga, ya que la reutilización del software se dá al máximo.

Por ello, creo que deberías congelar un momento esa pretención de emplear Excel, y darle duro a estudiar tantas APIs disponibles. El sitio www.msdn.microsoft.com tiene mucha información al respecto; usualmente las escuelas no te enseñan estas cosas. Con suerte, te enseñarán el API de Windows o MFC para crear aplicaciones gráficas, pero emplear COM, ATL o ActiveX requieren una actitud autodidacta, y que te puede llevar tiempo.

Finalmente, para lo que quieres hacer se me ocurre otra opción, no sé si sea plausible o siquiera posible. Estoy pensando en lo siguiente. Los archivos de Excel se guardan --como todo-- en formato binario. Si pudieras conseguir en algún lado cuál es el formato que Excel sigue con sus documentos, bien podrías abrir el archivo en modo binario, ubicar la celda a modificar y cambiar el valor ahí mismo. Con suerte, alguien ya hizo alguna librería que haga lo anterior. Prueba buscando en CodeProject.com o en SourceForge.net. Si encuentras algo, avísame para echarle un ojo y poderos ayudar.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda urgente

Publicado por Frank (4 intervenciones) el 19/10/2005 22:37:58
Mira estoy entrando en un mundo totalmente nuevo para mi me podria dar una mejor orientacion porque me he pasado unas cuantas horas conectado a la pagina donde me dices y no se que es lo que tengo que leer.
Disculpa la molestia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda urgente

Publicado por fernando.gomez (1603 intervenciones) el 20/10/2005 01:21:24
Como te dije, primero tienes que aprender el Win API. Hay miles de recursos en el Internet, en particular en CodeProject. Revisa en particular http://winapi.conclase.net/curso/index.php?cap=000.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda urgente

Publicado por Frank (4 intervenciones) el 20/10/2005 04:31:17
Muchas gracias si tengo algun problema hago contacto contigo, el stio esta excelente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar