El 20 de marzo de 2010 14:19, José Jesús <[email protected]> escribió:
> Estoy buscando como importar un archivo de texto a Calc leyendo carácter
> por carácter (o string), algo como "fgets".
> Tengo un archivo de texto en el cual se han dispuesto registros de 500
> caracteres, sin carácter de separación alguno. El primer carácter
> siempre indica el tipo de registro. Según el tipo de registro los campos
> (dentro de ese registro) tienen una longitud determinada, pero los
> campos no tienen porque tener la misma longitud.
>
> ¿Cual sería el código para apuntar hacia el archivo? y luego ir leyendo
> cadenas de 500 en 500 caracteres?
>
> Saludos a todos,
> JJ Palacios
>
Hola...
Por favor, checa si la siguiente macro te sirve, si es así, la puedes
convertir en función de forma muy sencilla...
Sub LeerArchivo()
Dim oAA As Object
Dim sRuta As String
Dim oArchivo As Object
Dim oTexto As Object
Dim sContenido As String
Dim co1 As Long
'La ruta del archivo
sRuta = ConvertToUrl( "/home/mau/Desktop/archivo.txt" )
'Servicio para acceso a archivos
oAA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
'Servicio para manipular archivos
oTexto = createUnoService("com.sun.star.io.TextInputStream")
'Verificamos que exista el archivo
If oAA.exists( sRuta ) Then
'Abrimos el archivo para lectura/escritura
oArchivo = oAA.openFileReadWrite( sRuta )
'El archivo puede ser más grande pero no cabe en una variable
String, si pasa el tamaño te devuelve una cadena vacía
If oArchivo.getLength < 65535 Then
'Leemos el archivo de forma binaria
oTexto.setInputStream( oArchivo.getInputStream )
'Leemos el contenido completo como texto
sContenido = oTexto.readString( Array(""), True )
'Leemos cada 500 caracteres
For co1 = 1 To Len(sContenido) Step 500
'Cuidado, si tu archivo es muy grande este ciclo puede ser
muy largo
'solo te lo muestro como ejemplo, aquí se supone
manipularias el archivo
'a tus necesidades
MsgBox Mid( sContenido, co1, 500 )
Next
Else
MsgBox "Archivo demasiado grande"
End If
Else
MsgBox "No se encontró el archivo: " & ConvertFromUrl(sRuta)
End If
End Sub
Saludos
Mauricio
--
_______________________________
Todo lo que no es dado es perdido