Datos dinámicos en archivo excel

Sith

Forista
Registrado
19 Nov 2005
Mensajes
1.928
Reacciones
12
Buenas...

Esta pregunta es de premio: he visto hacerlo, pero no se como se ejecuta.

A ver: estoy desarrollando un plugin para una aplicacion ERP que lee los datos de una hoja Excel y los inserta en una base de datos. (hasta aqui el cotilleo).

El caso es que algunas celdas tienen un origen de datos en una BBDD Oracle, con lo cual si lo abro en un equipo que no contenga el ODBC, solo obtengo la llamada a la funcion.

Bien, dado que el servidor donde va la aplicacion NO puede tener una conexion con el Oracle y mucho menos cosillas de M$ (va todo en Linux), necesito que el usuario, cuando rellene la hoja de Excel con los 4 datos que falten me pueda grabar el archivo con los valores y no las llamadas.

Es decir, que sustituya las funciones por lo valores obtenidos.

Se que existe, pero no recuerdo como se "congelan" los valores en las celdas. :-k
 

jose.ramon

En Practicas
Registrado
30 Ene 2003
Mensajes
289
Reacciones
218
No sé si te servirá el clásico "copiar" y "pegado especial" ->solo valores...
 

Sith

Forista
Registrado
19 Nov 2005
Mensajes
1.928
Reacciones
12
jose.ramon;9937927 dijo:
No sé si te servirá el clásico "copiar" y "pegado especial" ->solo valores...

Lo he probado y me podría servir, pero el problema es que el documento son varias hojas (10), por tanto una persona (que es la que genera las 30-40 hojas que se procesan al mes) tendría que hacerlo a mano... y no es precisamente una lumbrera.

Se que hay un paso previo a un "guardar como..." que precisamente te hace algo parecido a eso, pero ni idea de donde está.
 

Plankton

Forista Legendario
Registrado
1 Jun 2005
Mensajes
9.361
Reacciones
6.190
No tengo ni idea tio. Quizas jugando con el formato de las celdas/columnas/filas?
 

zeki

Forista Senior
Modelo
BMW 320d e46
Registrado
25 Feb 2010
Mensajes
4.206
Reacciones
1.645
si lo que quieres esque cuando tu copies la formula en otra celda, tienes que poner el signo del dolar$ delante y enmedio de la letra y el numero y asi no se copiaran... la nueva formula, solo se copia la formula, a la que le pusistes los signos
 

Sith

Forista
Registrado
19 Nov 2005
Mensajes
1.928
Reacciones
12
zeki;9940224 dijo:
si lo que quieres esque cuando tu copies la formula en otra celda, tienes que poner el signo del dolar$ delante y enmedio de la letra y el numero y asi no se copiaran... la nueva formula, solo se copia la formula, a la que le pusistes los signos

No, no es eso... aunque desconocía esa posibilidad (reconozco que en Excel soy una nulidad).

A ver, intentaré explicaralo más fácilmente sin tanto detalle técnico:


  • Le pasamos una hoja Excel, con unas 10 páginas de formulitas y estadísticas, a una persona para que la rellene.
  • Esa persona, completa unas celdas que hay en la página 1, con unos datos tipo fecha, código de departamento, facturación, y todo lo demás.
  • El resto de páginas, tomando esos datos, "se rellenan solas" a partir de las fórmulas que hay en las celdas.
Bien. Una vez hecho esto, guarda el archivo con los cambios.

Si se abre la hoja en un equipo que no está conectado a la red, aparece la hoja 1 rellena, y el resto de campos con #####. PERO, hay una opción en Excel que es "no actualizar los campos", con lo cual toma los valores que le aparecieron a la persona que rellenó la hoja 1, cuyo PC está en la red de contabilidad.

Esos valores almacenados, son una especie de caché que se queda dentro del Excel, pero que están camuflados dentro de lo que es el archivo.

Bien, yo ahora tengo que procesar la hoja Excel sin usar Office. Como no puedo leer (ni se donde están) esos datos almacenados, me aparece que para la celda B5 de la página 2, el valor es '=cc.fcompname(....)' que es una llamada a una base de datos.

Ahora la pregunta es:

  • Se que se puede guardar la hoja Excel de forma que se quede el contenido (los números y textos) tal y como le aparece al primer operador.
  • En ese proceso, se pierden las fórmulas, pero me da igual porque ya las conozco.
  • Hay una opción que se pulsa antes de hacer un "Guardar como..." que realiza precisamente eso: quitar fórmulas y dejar los resultados.
Y la duda es: ¿Cómo se hace eso? ¿Donde tiene que darle el operador?
 

zeki

Forista Senior
Modelo
BMW 320d e46
Registrado
25 Feb 2010
Mensajes
4.206
Reacciones
1.645
El_Sith;9944739 dijo:
No, no es eso... aunque desconocía esa posibilidad (reconozco que en Excel soy una nulidad).

A ver, intentaré explicaralo más fácilmente sin tanto detalle técnico:


  • Le pasamos una hoja Excel, con unas 10 páginas de formulitas y estadísticas, a una persona para que la rellene.
  • Esa persona, completa unas celdas que hay en la página 1, con unos datos tipo fecha, código de departamento, facturación, y todo lo demás.
  • El resto de páginas, tomando esos datos, "se rellenan solas" a partir de las fórmulas que hay en las celdas.
Bien. Una vez hecho esto, guarda el archivo con los cambios.

Si se abre la hoja en un equipo que no está conectado a la red, aparece la hoja 1 rellena, y el resto de campos con #####. PERO, hay una opción en Excel que es "no actualizar los campos", con lo cual toma los valores que le aparecieron a la persona que rellenó la hoja 1, cuyo PC está en la red de contabilidad.

Esos valores almacenados, son una especie de caché que se queda dentro del Excel, pero que están camuflados dentro de lo que es el archivo.

Bien, yo ahora tengo que procesar la hoja Excel sin usar Office. Como no puedo leer (ni se donde están) esos datos almacenados, me aparece que para la celda B5 de la página 2, el valor es '=cc.fcompname(....)' que es una llamada a una base de datos.

Ahora la pregunta es:

  • Se que se puede guardar la hoja Excel de forma que se quede el contenido (los números y textos) tal y como le aparece al primer operador.
  • En ese proceso, se pierden las fórmulas, pero me da igual porque ya las conozco.
  • Hay una opción que se pulsa antes de hacer un "Guardar como..." que realiza precisamente eso: quitar fórmulas y dejar los resultados.
Y la duda es: ¿Cómo se hace eso? ¿Donde tiene que darle el operador?

##### si te salen esos signo, a ti no te a dao por aumentar el tamaño el tamaño de la celda, es porque el valor es tan grande que no cabe en el tamaño original, asi que tendras que agrandarlo para que quepa, por lo demas deberia guardarse y no perder nada, y ya por lo demas no se lo que quieres decir...
 

i_minex

Forista Legendario
Modelo
E46-E85-987.2
Registrado
24 May 2005
Mensajes
8.082
Reacciones
4.082
Una pregunta, y si guardas el archivo excel final en formato CSV ? luego lo podras abrir con una simple función ya que sera un archivo plano.

Lo que no se ahora mismo es que si lo guardas, se guardaran los valores o las formulas.

Lo has intentado asi? Para la persona que le mete los datos sera facil hacer un "guardar como..." y marcar el formato CSV.

Un saludo! ;-)
 

Sith

Forista
Registrado
19 Nov 2005
Mensajes
1.928
Reacciones
12
zeki;9945464 dijo:
##### si te salen esos signo, a ti no te a dao por aumentar el tamaño el tamaño de la celda, es porque el valor es tan grande que no cabe en el tamaño original, asi que tendras que agrandarlo para que quepa, por lo demas deberia guardarse y no perder nada, y ya por lo demas no se lo que quieres decir...

Llámalo #####, llámalo #!ADDIN (esto es de OpenOffice) o como quieras, pero el archivo NO se trata de abrir el archivo en Excel, quepa en la celda o no. Es leer el valor desde una función en Python, en un desarrollo que utiliza los *.xls como fuentes de datos, que aqui le tenemos alergia al Güindons :descojon:

i_minex;9946901 dijo:
Una pregunta, y si guardas el archivo excel final en formato CSV ? luego lo podras abrir con una simple función ya que sera un archivo plano.

Lo que no se ahora mismo es que si lo guardas, se guardaran los valores o las formulas.

Lo has intentado asi? Para la persona que le mete los datos sera facil hacer un "guardar como..." y marcar el formato CSV.

Un saludo! ;-)

Lo probé, pero lo que se guardan son los valores estáticos, y los campos que corresponden a fórmulas se quedan igual.

Creo que la solución va a pasar por desarrollar una macro que haga una especie de "Copy & Paste special" o algo así :-k
 

i_minex

Forista Legendario
Modelo
E46-E85-987.2
Registrado
24 May 2005
Mensajes
8.082
Reacciones
4.082
Supongo que deben haber muchas formulas en el Excel, sino puedes coger los datos estáticos y calcularlos luego. Te lo comento, porque a veces se pierde menos el tiempo calculandolo de nuevo que intentar hacer copias de datos...

Como no sé el alcance de todos los datos que necesitas incorporar en tu BBDD a partir de la hoja de Excel, deberías evaluar si esta opción que te comento es viable o incluso es mas facil que la otra.

Un saludo y suerte! ;-)
 

Sith

Forista
Registrado
19 Nov 2005
Mensajes
1.928
Reacciones
12
i_minex;9948937 dijo:
Supongo que deben haber muchas formulas en el Excel, sino puedes coger los datos estáticos y calcularlos luego. Te lo comento, porque a veces se pierde menos el tiempo calculandolo de nuevo que intentar hacer copias de datos...

Como no sé el alcance de todos los datos que necesitas incorporar en tu BBDD a partir de la hoja de Excel, deberías evaluar si esta opción que te comento es viable o incluso es mas facil que la otra.

Un saludo y suerte! ;-)

¡Eso es lo que quiero hacer! El problema es que, por la infraestructura de red, no tengo acceso al servidor de Base de Datos y por tanto no puedo obtener directamente los valores que necesito.

Tengo la hoja de excel original, con sus formulitas "no-sql", que incorporo al programa. Eso está chupao.

Lo que necesito es que el operador que rellene la hoja, cuando esté toda completa (ojito, que son varios libros dentro de la hoja) me la guarde con los valores que saca de la Base de Datos y los que mete él.
Es decir, sólo los números.

Luego leo las celdas que me interesan, aplico las fórmulas, hago mis procesos-que-no-tienen-nada-que-ver con el Excel... y a otra cosa ;-)
 

i_minex

Forista Legendario
Modelo
E46-E85-987.2
Registrado
24 May 2005
Mensajes
8.082
Reacciones
4.082
Entiendo tu problema pero no veo ninguna solución que no sea algun tipo de exportación o conversión desde el propio MSExcel. Entiendo que el encargado de conectarse a la BBDD es el propio Excel, asi que cuando lees la celda te devuelve el string con el comando de conexión, así que yo intentaría buscar algun tipo de exportación o incluso intentar guardar las hoja en formato HTML o algún formato que sea leíble.

Quizá podrías crear una macro que te creara un archivo de texto u otro excel con los datos rellenados, si lo haces a través del mismo MSExcel seguramente podrás coger los resultados.

Un saludo! ;-)
 
Arriba