[RESUELTO]Convertir texto a numero
[RESUELTO]Convertir texto a numero
Buenos dias
Mi problema es que he creado una macro que me exporta datos de un documento (.txt) a una hoja de calculo (calc) pero al hacerlo me exporta los numeros como texto (string) ('4,699993E-2) con la comilla delante del numero, y no puedo hacer calculo con esos numeros al tomarlo como texto.
La idea es que me exporte y poder procesar esos datos de forma automatica, pues la cantidad de archivos es grande.
Mi problema es que he creado una macro que me exporta datos de un documento (.txt) a una hoja de calculo (calc) pero al hacerlo me exporta los numeros como texto (string) ('4,699993E-2) con la comilla delante del numero, y no puedo hacer calculo con esos numeros al tomarlo como texto.
La idea es que me exporte y poder procesar esos datos de forma automatica, pues la cantidad de archivos es grande.
Última edición por Dante el Jue May 27, 2010 6:08 pm, editado 1 vez en total.
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2
Re: Convertir texto a numero
Hola...
No se como este haciendo la importación en tu macro, pero lo mejor es indicarle que tipo de campo es cada uno para tener el resultado correcto... si nos muestras el código es más fácil ayudarte...
Saludos
No se como este haciendo la importación en tu macro, pero lo mejor es indicarle que tipo de campo es cada uno para tener el resultado correcto... si nos muestras el código es más fácil ayudarte...
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Convertir texto a numero
Hola
Te escribo el codigo.
La macro te abre una ventana para que busques el archivo y lo abre automaticamente. Tambien le hice para que no me de errores cuando cancelo esa ventana.
En esta parte trabajo con el archivo abierto, un .txt, selecciono y copio todo; luego busco mi macro por el nombre, hice una funcion para esto (buscarpag) que me busca el archivo y me lo activa y en una hoja especifica, para luego pegar los datos ahi.
Te escribo el codigo.
La macro te abre una ventana para que busques el archivo y lo abre automaticamente. Tambien le hice para que no me de errores cuando cancelo esa ventana.
Código: Seleccionar todo
Sub Sonda
Call abrirSonda()
if salir = 1 then
exit sub
end if
Call sonda0
End Sub
Private salir as integer
Sub AbrirSonda()
Dim oDlgAbrirArchivo as Object
Dim mArchivo() As String
Dim mOpciones()
Dim sRuta As String
Dim oDoc As Object
salir = 0
'Creamos el servicio necesario
oDlgAbrirArchivo = CreateUnoService ("com.sun.star.ui.dialogs.FilePicker")
'Establecemos el titulo del cuadro de dialogo
oDlgAbrirArchivo.setTitle("Selecciona el archivo a abrir")
'Con el metodo .Execute() mostramos el cuadro de dialogo
'Si el usuario presiona Abrir el metodo devuelve 1 que podemos evaluar como Verdadero (True)
'Si presiona Cancelar devuelve 0
If oDlgAbrirArchivo.Execute() Then
'De forma predeterminada, solo se puede seleccionar un archivo
'pero devuelve una matriz de todos modos con la ruta completa
'del archivo en formato URL
mArchivo() = oDlgAbrirArchivo.getFiles()
'El primer elemento de la matriz es el archivo seleccionado
sRuta = mArchivo(0)
'Y lo abrimos
oDoc = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mOpciones() )
Else
'Si el usuario presiona Cancelar
MsgBox "Proceso cancelado"
salir = 1
End If
End Sub
Código: Seleccionar todo
Sub sonda0
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
document.close(True)
Call sonda0a
End Sub
Sub sonda0a
Dim oDocumentos As Object
Dim oDocumento As Object
Dim oVentana As Object
Dim oEnumeraDocumentos As Object
buscarpag("Macro Sonda.ods" , "Macro")
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Dim oHoja As Object
oHoja = ThisComponent.getSheets().getByName("Datosond")
oHoja.isVisible = True
Dim Hoja As Object
Hoja = ThisComponent.getSheets.getByName("Datosond")
'La activamos
ThisComponent.getCurrentController.setActiveSheet(Hoja)
rem ----------------------------------------------------------------------
rem ----------------------------------------------------------------------
dim args1a(0) as new com.sun.star.beans.PropertyValue
args1a(0).Name = "ToPoint"
args1a(0).Value = "$A$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1a())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
End sub
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2
Re: Convertir texto a numero
Hola...
¿El archivo a importar siempre tiene la misma estructura?, esto facilita la importación de los datos, ¿puedes subir un ejemplo de este archivo? y si dices que tienes que importar que hacerlo con una cantidad grande de archivos, puedes importar todos los que quieras...
Saludos
¿El archivo a importar siempre tiene la misma estructura?, esto facilita la importación de los datos, ¿puedes subir un ejemplo de este archivo? y si dices que tienes que importar que hacerlo con una cantidad grande de archivos, puedes importar todos los que quieras...
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Convertir texto a numero
Hola
Si, felizmente el archivo a importar tiene la misma estructura, te adjunto el archivo.
Me salio un error, que no puede adjuntar con extensiones .txt, lo cambie a .odt el archivo.
Otra cosa, omiti sin querer algunas partes del codigo, no se si influira mucho. En la parte de abrir el archivo .txt, lo cual lo hace en el writer, en esa parte modifico los espacios con buscar y reemplazar, de ahi copio todo y lo pego a la hoja de calculo, todo por medio de la macro.
El archivo que te he adjuntado esta cortado, el original pesa mas de 2 MB y me sale error jeje.
Para que entiendas el archivo, la primera linea son los titulos, tiempo, rms, y las frecuencias; de la segunda linea vienen los datos, cada linea es un conjunto de datos, asi que no hay problema, el formato es igual, solo que con mas lineas, unas 500 mas jeje.
Si, felizmente el archivo a importar tiene la misma estructura, te adjunto el archivo.
Me salio un error, que no puede adjuntar con extensiones .txt, lo cambie a .odt el archivo.
Otra cosa, omiti sin querer algunas partes del codigo, no se si influira mucho. En la parte de abrir el archivo .txt, lo cual lo hace en el writer, en esa parte modifico los espacios con buscar y reemplazar, de ahi copio todo y lo pego a la hoja de calculo, todo por medio de la macro.
El archivo que te he adjuntado esta cortado, el original pesa mas de 2 MB y me sale error jeje.
Para que entiendas el archivo, la primera linea son los titulos, tiempo, rms, y las frecuencias; de la segunda linea vienen los datos, cada linea es un conjunto de datos, asi que no hay problema, el formato es igual, solo que con mas lineas, unas 500 mas jeje.
- Adjuntos
-
- Buffer2_5a.odt
- (22.47 KiB) Descargado 347 veces
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2
Re: Convertir texto a numero
Hola...
Por favor, agrega el archivo TXT original, con unas cuantas líneas representativas es suficiente, comprimelo en ZIP o 7ZIP para que te lo acepte el foro...
Saludos
Por favor, agrega el archivo TXT original, con unas cuantas líneas representativas es suficiente, comprimelo en ZIP o 7ZIP para que te lo acepte el foro...
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Convertir texto a numero
Ok
Te adjunto el archivo comprimido.
Te adjunto el archivo comprimido.
- Adjuntos
-
- Buffer2_5a.zip
- (3.67 KiB) Descargado 296 veces
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2
Re: Convertir texto a numero
Hola...
Te anexo el archivo de como lo importa Calc, esto lo hice manualmente por ahora, es necesario para saber como quieres el final. No es estoy seguro pero confirmame, ¿los títulos son Time RMS SPL y todo lo demás son datos? veo que es un ancho fijo para los datos, ¿así es?, algunos datos tienen ancho fijo y otros están separados por tabulador, generalmente este tipo de archivos tiene una estructura constante, te lo comento por que, como puedes ver en el archivo anexo, al menos tu archivo, no trae un salto de línea entre los títulos y entre muchas de las líneas, si así viene tu archivo TXT original va a complicar solo un poco el proceso, muestrame como esta dejando tu macro el archivo final, supongo que solo te faltaría que reconozco los números como planteabas en el primer mensaje de este tema, pero tal vez podamos hacer la importación directa en Calc...
Saludos
Te anexo el archivo de como lo importa Calc, esto lo hice manualmente por ahora, es necesario para saber como quieres el final. No es estoy seguro pero confirmame, ¿los títulos son Time RMS SPL y todo lo demás son datos? veo que es un ancho fijo para los datos, ¿así es?, algunos datos tienen ancho fijo y otros están separados por tabulador, generalmente este tipo de archivos tiene una estructura constante, te lo comento por que, como puedes ver en el archivo anexo, al menos tu archivo, no trae un salto de línea entre los títulos y entre muchas de las líneas, si así viene tu archivo TXT original va a complicar solo un poco el proceso, muestrame como esta dejando tu macro el archivo final, supongo que solo te faltaría que reconozco los números como planteabas en el primer mensaje de este tema, pero tal vez podamos hacer la importación directa en Calc...
Saludos
- Adjuntos
-
- Buffer2_5a.ods
- (16.94 KiB) Descargado 319 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Convertir texto a numero
Que tal Mauricio
Con respecto a los titulos, es toda la primera liniea: Time, RMS, SPL y los 32 numeros siguientes.
He estado avanzando algo, he logrado que me lo exporte como dato, pero me sale la ventana de pegado especial, el cual tengo que seleccionar Texto sin formato y luego en Importar texto, el de separado por Espacio.
Todo me lo pone en datos, y como la primera linea es de titulo, siempre es igual, le hice una mascara el cual solo lo pego encima y soluciono esa parte de los titulos.
Te adjunto el archivo para que veas como deseo que quede al final.
Con respecto a los titulos, es toda la primera liniea: Time, RMS, SPL y los 32 numeros siguientes.
He estado avanzando algo, he logrado que me lo exporte como dato, pero me sale la ventana de pegado especial, el cual tengo que seleccionar Texto sin formato y luego en Importar texto, el de separado por Espacio.
Todo me lo pone en datos, y como la primera linea es de titulo, siempre es igual, le hice una mascara el cual solo lo pego encima y soluciono esa parte de los titulos.
Te adjunto el archivo para que veas como deseo que quede al final.
- Adjuntos
-
- buffer.ods
- (18.79 KiB) Descargado 330 veces
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2
Re: Convertir texto a numero
Hola...
Tengo varias preguntas: la primer línea de títulos, ¿siempre es la misma, exactamente igual?, si es así esto nos permite omitirla e insertarla por código, veo que repites al final de nuevo los títulos excepto el Tiempo, pero no veo como obtienes los valores finales, por que no son promedio, ni máximos ni mínimos, ¿como los obtienes? El separador de los campos, es un tema muy importante, no se si hay un problema con la estructura de tu archivo o tu programa fuente no lo genera consistentemente, me explico con la siguiente imagen. Si seleccionamos tabulador como separador de campos, observa como Time, RMS y SPL no están separados por tabulador, si seleccionamos espacio, los datos numéricos no están separador por este, si no por un tabulador y si seleccionamos ancho fijo, de nuevo los títulos no están correctamente estructurados, pues queda un espacio entre SPL y 16 Hz.
Si tu programa fuente así lo genera y no hay modo de cambiarlo, yo haría lo siguiente; omitiría la importación de la primer fila de los títulos para insertarlos posteriormente por código, importaría las restantes filas separando por el tabulador, daría formato y listo.
Espero tus respuestas y comentarios.
Saludos
Tengo varias preguntas: la primer línea de títulos, ¿siempre es la misma, exactamente igual?, si es así esto nos permite omitirla e insertarla por código, veo que repites al final de nuevo los títulos excepto el Tiempo, pero no veo como obtienes los valores finales, por que no son promedio, ni máximos ni mínimos, ¿como los obtienes? El separador de los campos, es un tema muy importante, no se si hay un problema con la estructura de tu archivo o tu programa fuente no lo genera consistentemente, me explico con la siguiente imagen. Si seleccionamos tabulador como separador de campos, observa como Time, RMS y SPL no están separados por tabulador, si seleccionamos espacio, los datos numéricos no están separador por este, si no por un tabulador y si seleccionamos ancho fijo, de nuevo los títulos no están correctamente estructurados, pues queda un espacio entre SPL y 16 Hz.
Si tu programa fuente así lo genera y no hay modo de cambiarlo, yo haría lo siguiente; omitiría la importación de la primer fila de los títulos para insertarlos posteriormente por código, importaría las restantes filas separando por el tabulador, daría formato y listo.
Espero tus respuestas y comentarios.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Convertir texto a numero
Que tal
Respondiendo a tus preguntas:
Los títulos son iguales siempre, se puede insertar por código, lo que yo hice fue esos titulos ya tenerlos listos en otra hoja ( hoja plantilla ) y lo que hacia era copiar y pegar encima.
Respecto a los valores al final, son tres operaciones, las cuales hice una función y los hace automaticamente, pero mejor te adjunto de nuevo y con las formulas, para que entiendas mejor.
En el archivo estan las operaciones al costado de la tabla, es primero el antilogaritmo , de ahi el promedio de esos antilogaritmos por columnas y por ultimo el logaritmo de ese promedio.
Respecto a eso de los tabuladores, te soy sincero, no entiendo mucho, lo que se es que el programa fuente genera en archivos con extension .txt y no se puede configurar eso.
Los titulos no tienen importancia asi que, como tu dices, se puede omitir eso e insertalos por codigo, y luego eso de separarlos por el tabulador y darle formato a los demas datos.
Te comento que estas cosas tendria que hacerse en forma automatica, la razon es porque lo que estoy haciendo, las macros para procesar estos archivos luego se van a otra area de mi trabajo, y el operario solo tiene que escoger el archivo y correr el programa y listo. Asi que mejor, me demoro y lo hago lo mas simple, para no tener problemas a futuro.
Espero me ayudes, o dar una solucion alternativa a la cual siempre estoy abierto a escuchar.
Respondiendo a tus preguntas:
Los títulos son iguales siempre, se puede insertar por código, lo que yo hice fue esos titulos ya tenerlos listos en otra hoja ( hoja plantilla ) y lo que hacia era copiar y pegar encima.
Respecto a los valores al final, son tres operaciones, las cuales hice una función y los hace automaticamente, pero mejor te adjunto de nuevo y con las formulas, para que entiendas mejor.
En el archivo estan las operaciones al costado de la tabla, es primero el antilogaritmo , de ahi el promedio de esos antilogaritmos por columnas y por ultimo el logaritmo de ese promedio.
Respecto a eso de los tabuladores, te soy sincero, no entiendo mucho, lo que se es que el programa fuente genera en archivos con extension .txt y no se puede configurar eso.
Los titulos no tienen importancia asi que, como tu dices, se puede omitir eso e insertalos por codigo, y luego eso de separarlos por el tabulador y darle formato a los demas datos.
Te comento que estas cosas tendria que hacerse en forma automatica, la razon es porque lo que estoy haciendo, las macros para procesar estos archivos luego se van a otra area de mi trabajo, y el operario solo tiene que escoger el archivo y correr el programa y listo. Asi que mejor, me demoro y lo hago lo mas simple, para no tener problemas a futuro.
Espero me ayudes, o dar una solucion alternativa a la cual siempre estoy abierto a escuchar.
- Adjuntos
-
- Buffer.ods
- (34.57 KiB) Descargado 332 veces
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2
Re: Convertir texto a numero
Hola...
Croe que ya esta completo, por favor, checa el archivo anexo que importa los datos de archivos de texto con la estructura de tu archivo de muestra y los deja con el formato de tu archivo también de muestra... hago de una plantilla que te incluyo, puedes cambiarle el formato que quieras, pero no cambies el número de columnas en la hoja datos, ni la posición en la hoja Resumen...
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
Croe que ya esta completo, por favor, checa el archivo anexo que importa los datos de archivos de texto con la estructura de tu archivo de muestra y los deja con el formato de tu archivo también de muestra... hago de una plantilla que te incluyo, puedes cambiarle el formato que quieras, pero no cambies el número de columnas en la hoja datos, ni la posición en la hoja Resumen...
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
- Adjuntos
-
- ImportarTXT.7z
- (18.95 KiB) Descargado 354 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Convertir texto a numero
Excelente
Muchas gracias, perfecto sale, ahora estoy viendo los codigo y descifrando cada uno para que sirve, jeje.
Cualquier consulta por algo que no entienda te lo hare saber.
Muchas gracias, perfecto sale, ahora estoy viendo los codigo y descifrando cada uno para que sirve, jeje.
Cualquier consulta por algo que no entienda te lo hare saber.
OpenOffice.org 3.2
Windows XP service pack 2
Windows XP service pack 2