/opt/libreoffice4.4/program/soffice --headless --convert-to txt:Text iglesia.odt
"c:\program files\libreoffice 4\program\soffice" --headless --convert-to txt:Text D:\iglesia.docx
def exportar_txt():
app = LIBO()
path = app.get_folder()
files = app.get_files(path, 'odt')
for f in files:
print ('Exportando: {}'.format(f))
doc = app.open(f, {'Hidden': True})
path = app.replace_ext(doc.path, 'txt')
doc.save(path, {'FilterName': 'Text'})
print ('\tDocumento exportado: {}'.format(path))
doc.close()
print ('Exportación terminada...')
return
└──> soffice --calc
Exportando: /home/mau/test/writer3.odt
Documento exportado: /home/mau/test/writer3.txt
Exportando: /home/mau/test/writer1.odt
Documento exportado: /home/mau/test/writer1.txt
Exportando: /home/mau/test/writer2.odt
Documento exportado: /home/mau/test/writer2.txt
Exportación terminada...
fornelasa escribió:Considero que si es posible hacerlo. ¿Podrías subir a este foro tu macro de Word?
Saludos, Federico.
arivas_2005 escribió:Saludos.
Hace algun tiempo necesité de transformar muchísimos archivos .docx y .odt a texto plano
la referencia esta en este link
https://forum.openoffice.org/es/forum/viewtopic.php?f=50&t=12954&sid=0ca9f87befac80b75a794a2d264497d4
La tarea fue realizada por linea de comando, usando lo siguiente:
en linux
- Código: Seleccionar todo Expandir vistaContraer vista
/opt/libreoffice4.4/program/soffice --headless --convert-to txt:Text iglesia.odt
en windows
- Código: Seleccionar todo Expandir vistaContraer vista
"c:\program files\libreoffice 4\program\soffice" --headless --convert-to txt:Text D:\iglesia.docx
(ojo con la D:\ mayúscula, ya que los nombres de archivos, son sensibles a mayúsculas)
con ambas extensiones se obtiene igual resultado. Es decir, transforma por igual los dos tipos de archivo.
@ echo off
C:
cd \program files\libreoffice 4\
For /F "tokens=* delims=" %%A in (D:\input.txt) do ( " C:\Program Files\Libreoffice 4\program\soffice.exe" --headless --convert-to txt:Text "%%A")
D:
albfernan escribió:Macro leer documentos odt y guardar como texto
albfernan escribió:Quiero hacer lo mismo en LibreOffice Writer
Sub Convertir_De_Odt_A_Txt()
dim Opciones()
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(1).Name = "FilterName"
args1(1).Value = "Text"
carpeta = "C:\TuRuta\"
destino = "C:\OtraRuta\"
tipo = "*.odt"
ruta = carpeta + tipo
ofile = dir(ruta)
do
archivo = ConvertToUrl(carpeta + ofile)
DocCalc = StarDesktop.loadComponentFromURL(archivo, "_blank", 0, Opciones())
document = DocCalc.CurrentController.Frame
args1(0).Value = ConvertToUrl(destino + Replace(ofile, ".odt", ".txt"))
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
document.Close(True)
ofile = dir
loop until ofile = ""
msgbox "¡Listo!"
End Sub
mauricio escribió:Con EasyMacro es trivial: https://forum.openoffice.org/es/forum/v ... 50&t=13062
- Código: Seleccionar todo Expandir vistaContraer vista
def exportar_txt():
app = LIBO()
path = app.get_folder()
files = app.get_files(path, 'odt')
for f in files:
print ('Exportando: {}'.format(f))
doc = app.open(f, {'Hidden': True})
path = app.replace_ext(doc.path, 'txt')
doc.save(path, {'FilterName': 'Text'})
print ('\tDocumento exportado: {}'.format(path))
doc.close()
print ('Exportación terminada...')
return
- Código: Seleccionar todo Expandir vistaContraer vista
└──> soffice --calc
Exportando: /home/mau/test/writer3.odt
Documento exportado: /home/mau/test/writer3.txt
Exportando: /home/mau/test/writer1.odt
Documento exportado: /home/mau/test/writer1.txt
Exportando: /home/mau/test/writer2.odt
Documento exportado: /home/mau/test/writer2.txt
Exportación terminada...
Saludos
albfernan escribió:arivas_2005 escribió:Saludos.
Hace algun tiempo necesité de transformar muchísimos archivos .docx y .odt a texto plano
la referencia esta en este link
https://forum.openoffice.org/es/forum/viewtopic.php?f=50&t=12954&sid=0ca9f87befac80b75a794a2d264497d4
La tarea fue realizada por linea de comando, usando lo siguiente:
en linux
- Código: Seleccionar todo Expandir vistaContraer vista
/opt/libreoffice4.4/program/soffice --headless --convert-to txt:Text iglesia.odt
en windows
- Código: Seleccionar todo Expandir vistaContraer vista
"c:\program files\libreoffice 4\program\soffice" --headless --convert-to txt:Text D:\iglesia.docx
(ojo con la D:\ mayúscula, ya que los nombres de archivos, son sensibles a mayúsculas)
con ambas extensiones se obtiene igual resultado. Es decir, transforma por igual los dos tipos de archivo.
he probado esta solución y funciona perfectamente bajo ms-dos escribiendo la ruta, pero si lo hago en un .bat no funciona, no lo entiendo. ahora voy a probar a ejecutar el comando desde vb.net
arivas_2005 escribió:Saludos.
Idea..
despues de googlear..... !
suponiendo que usa Windows 7 profesional
1ª crear un archivo de texto con los nombres (y rutas completas) de los documentos a transformar (ej. DIR /B/S D:\*.docx > D:\input.txt y luego se depura manualmente)
2º utilizar un script bat para leer cada uno de los nombres de documentos y transformarlo, como por ejemplo el siguiente@ echo off
C:
cd \program files\libreoffice 4\
For /F "tokens=* delims=" %%A in (D:\input.txt) do ( " C:\Program Files\Libreoffice 4\program\soffice.exe" --headless --convert-to txt:Text "%%A")
D:
los archivos txt transformados se alojan en \Program Files\Libreoffice 4\
fornelasa escribió:Tambien, tal vez algo como esto:albfernan escribió:Macro leer documentos odt y guardar como textoalbfernan escribió:Quiero hacer lo mismo en LibreOffice Writer
Esta macro es una especie de traducción de tu macro Word
Asignala al evento "Abrir documento" del menú Herramientas <> Personalizar <> Sucesos (o Eventos)
- Código: Seleccionar todo Expandir vistaContraer vista
Sub Convertir_De_Odt_A_Txt()
dim Opciones()
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(1).Name = "FilterName"
args1(1).Value = "Text"
carpeta = "C:\TuRuta\"
destino = "C:\OtraRuta\"
tipo = "*.odt"
ruta = carpeta + tipo
ofile = dir(ruta)
do
archivo = ConvertToUrl(carpeta + ofile)
DocCalc = StarDesktop.loadComponentFromURL(archivo, "_blank", 0, Opciones())
document = DocCalc.CurrentController.Frame
args1(0).Value = ConvertToUrl(destino + Replace(ofile, ".odt", ".txt"))
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
document.Close(True)
ofile = dir
loop until ofile = ""
msgbox "¡Listo!"
End Sub
fornelasa escribió:albfernan, si consideras que el tema ha sido resuelto por favor marquemoslo como tal, aquí nos dicen como hacerlo:
https://forum.openoffice.org/es/forum/v ... f=3&t=2668
Saludos.
Imports System.IO
Imports System.Data.SqlClient
Module func_procesos
Public Sub procesos(rutaEntrada As String, rutaSalida As String)
Dim connSQL As New SqlConnection
Dim cmdSQL As New SqlCommand
connSQL = New SqlConnection(ConexionValidada.ToString)
connSQL.Open()
cmdSQL.Connection = connSQL
'BORRAR TABLAS TEMPORALES
cmdSQL.CommandText = "DELETE FROM wrk_bbdd"
cmdSQL.ExecuteNonQuery()
'******************************************************************************
'BORRAR FICHEROS EN CARPETA DE SALIDA ANTES DE PROCESAR
'******************************************************************************
For Each listaCarpeta As String In My.Computer.FileSystem.GetFiles(rutaSalida)
My.Computer.FileSystem.DeleteFile(listaCarpeta)
Next
'******************************************************************************
'CREAR BAT
'******************************************************************************
Dim array_lista As New ArrayList
Dim conta_bat As Integer = 0
Dim ficheroSalidaBat As String = "proceso_bat.bat"
'listar ficheros a procesar para incluir en bat
Dim rutacarpeta As New DirectoryInfo(rutaEntrada)
For Each file As FileInfo In rutacarpeta.GetFiles("*.odt")
array_lista.Add(file.Name)
Next
'comprobar que haya ficheros
Dim countArray_lista = array_lista.Count
If countArray_lista = 0 Then
Console.Write("No hay ficheros")
Console.ReadLine()
Exit Sub
End If
Dim st As StreamWriter
st = New StreamWriter("C:\rutaSalidaBat\" & ficheroSalidaBat, False)
Dim texto As String = ""
'añadir lineas a bat
If array_lista IsNot Nothing Then
For i = 0 To countArray_lista - 1
conta_bat += 1
If conta_bat = 1 Then
texto = "cd /d " & """" & rutaSalida.Remove(rutaSalida.Length - 1) & """"
texto &= vbCrLf
st.Write(texto)
End If
texto = """c:\program files\libreoffice 5\program\soffice""" & " --headless --convert-to txt:Text " & """" & rutaEntrada & array_lista(i) & """"
texto &= vbCrLf
st.Write(texto)
Next
st.Close()
End If
'******************************************************************************
'CONVERTIR DOCUMENTOS A TXT PROCESANDO BAT
'******************************************************************************
Shell("C:\ruta_bat\proceso_bat.bat", AppWinStyle.Hide, True)
'MAS CODIGO....
End Sub
End Module
cd /d "c:\ruta_salida"
"c:\program files\libreoffice 5\program\soffice" --headless --convert-to txt:Text "c:\ruta_entrada\file1.odt"
"c:\program files\libreoffice 5\program\soffice" --headless --convert-to txt:Text "c:\ruta_entrada\file2.odt"
fornelasa escribió:Tambien, tal vez algo como esto:albfernan escribió:Macro leer documentos odt y guardar como textoalbfernan escribió:Quiero hacer lo mismo en LibreOffice Writer
Esta macro es una especie de traducción de tu macro Word
Asignala al evento "Abrir documento" del menú Herramientas <> Personalizar <> Sucesos (o Eventos)
- Código: Seleccionar todo Expandir vistaContraer vista
Sub Convertir_De_Odt_A_Txt()
dim Opciones()
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(1).Name = "FilterName"
args1(1).Value = "Text"
carpeta = "C:\TuRuta\"
destino = "C:\OtraRuta\"
tipo = "*.odt"
ruta = carpeta + tipo
ofile = dir(ruta)
do
archivo = ConvertToUrl(carpeta + ofile)
DocCalc = StarDesktop.loadComponentFromURL(archivo, "_blank", 0, Opciones())
document = DocCalc.CurrentController.Frame
args1(0).Value = ConvertToUrl(destino + Replace(ofile, ".odt", ".txt"))
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
document.Close(True)
ofile = dir
loop until ofile = ""
msgbox "¡Listo!"
End Sub
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados