von seballa » Sa, 15.02.2020 22:31
Es war ein langes rumprobieren, ich habe es dann mit Variante A hinbekommen:
Die Datei (in meinem Fall ist das eine PHP Webseite, die Daten aus einer Mysql Datenbank ausgibt) wird durch eine Batchdatei geladen und dabei direkt das Makro aufgerufen:
Code: Alles auswählen
soffice.exe -n "c:\path\filename.txt" macro:///Standard.MeinMakro.Main --infilter="Text (encoded):UTF8"
sub Main
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem Document mit den Templates in die Datei laden
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"
args2(0).Value = "file:///C:/Path/to/tamplate/template.ott"
args2(1).Name = "Filter"
args2(1).Value = "writer8_template"
dispatcher.executeDispatch(document, ".uno:InsertDoc", "", 0, args2())
rem Alles auswählen
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
rem Set Template
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Template"
args4(0).Value = "myTemplateforText"
args4(1).Name = "Family"
args4(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args4())
rem Find all Lines containing XXX
dim args5(21) as new com.sun.star.beans.PropertyValue
args5(0).Name = "SearchItem.StyleFamily"
args5(0).Value = 2
args5(1).Name = "SearchItem.CellType"
args5(1).Value = 0
args5(2).Name = "SearchItem.RowDirection"
args5(2).Value = true
args5(3).Name = "SearchItem.AllTables"
args5(3).Value = false
args5(4).Name = "SearchItem.SearchFiltered"
args5(4).Value = false
args5(5).Name = "SearchItem.Backward"
args5(5).Value = false
args5(6).Name = "SearchItem.Pattern"
args5(6).Value = false
args5(7).Name = "SearchItem.Content"
args5(7).Value = false
args5(8).Name = "SearchItem.AsianOptions"
args5(8).Value = false
args5(9).Name = "SearchItem.AlgorithmType"
args5(9).Value = 0
args5(10).Name = "SearchItem.SearchFlags"
args5(10).Value = 65536
args5(11).Name = "SearchItem.SearchString"
args5(11).Value = "XXX"
args5(12).Name = "SearchItem.ReplaceString"
args5(12).Value = ""
args5(13).Name = "SearchItem.Locale"
args5(13).Value = 255
args5(14).Name = "SearchItem.ChangedChars"
args5(14).Value = 2
args5(15).Name = "SearchItem.DeletedChars"
args5(15).Value = 2
args5(16).Name = "SearchItem.InsertedChars"
args5(16).Value = 2
args5(17).Name = "SearchItem.TransliterateFlags"
args5(17).Value = 1280
args5(18).Name = "SearchItem.Command"
args5(18).Value = 1
args5(19).Name = "SearchItem.SearchFormatted"
args5(19).Value = false
args5(20).Name = "SearchItem.AlgorithmType2"
args5(20).Value = 1
args5(21).Name = "Quiet"
args5(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args5())
rem Set Template for Headline
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Template"
args6(0).Value = "Headline"
args6(1).Name = "Family"
args6(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args6())
rem same search but replace with empty string
dim args7(21) as new com.sun.star.beans.PropertyValue
args7(0).Name = "SearchItem.StyleFamily"
args7(0).Value = 2
args7(1).Name = "SearchItem.CellType"
args7(1).Value = 0
args7(2).Name = "SearchItem.RowDirection"
args7(2).Value = true
args7(3).Name = "SearchItem.AllTables"
args7(3).Value = false
args7(4).Name = "SearchItem.SearchFiltered"
args7(4).Value = false
args7(5).Name = "SearchItem.Backward"
args7(5).Value = false
args7(6).Name = "SearchItem.Pattern"
args7(6).Value = false
args7(7).Name = "SearchItem.Content"
args7(7).Value = false
args7(8).Name = "SearchItem.AsianOptions"
args7(8).Value = false
args7(9).Name = "SearchItem.AlgorithmType"
args7(9).Value = 0
args7(10).Name = "SearchItem.SearchFlags"
args7(10).Value = 65536
args7(11).Name = "SearchItem.SearchString"
args7(11).Value = "XXX"
args7(12).Name = "SearchItem.ReplaceString"
args7(12).Value = ""
args7(13).Name = "SearchItem.Locale"
args7(13).Value = 255
args7(14).Name = "SearchItem.ChangedChars"
args7(14).Value = 2
args7(15).Name = "SearchItem.DeletedChars"
args7(15).Value = 2
args7(16).Name = "SearchItem.InsertedChars"
args7(16).Value = 2
args7(17).Name = "SearchItem.TransliterateFlags"
args7(17).Value = 1280
args7(18).Name = "SearchItem.Command"
args7(18).Value = 3
args7(19).Name = "SearchItem.SearchFormatted"
args7(19).Value = false
args7(20).Name = "SearchItem.AlgorithmType2"
args7(20).Value = 1
args7(21).Name = "Quiet"
args7(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args7())
end sub
Es war ein langes rumprobieren, ich habe es dann mit Variante A hinbekommen:
Die Datei (in meinem Fall ist das eine PHP Webseite, die Daten aus einer Mysql Datenbank ausgibt) wird durch eine Batchdatei geladen und dabei direkt das Makro aufgerufen:
[code]
soffice.exe -n "c:\path\filename.txt" macro:///Standard.MeinMakro.Main --infilter="Text (encoded):UTF8"
sub Main
rem define variables
dim document as object
dim dispatcher as object
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem Document mit den Templates in die Datei laden
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"
args2(0).Value = "file:///C:/Path/to/tamplate/template.ott"
args2(1).Name = "Filter"
args2(1).Value = "writer8_template"
dispatcher.executeDispatch(document, ".uno:InsertDoc", "", 0, args2())
rem Alles auswählen
dispatcher.executeDispatch(document, ".uno:SelectAll", "", 0, Array())
rem Set Template
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Template"
args4(0).Value = "myTemplateforText"
args4(1).Name = "Family"
args4(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args4())
rem Find all Lines containing XXX
dim args5(21) as new com.sun.star.beans.PropertyValue
args5(0).Name = "SearchItem.StyleFamily"
args5(0).Value = 2
args5(1).Name = "SearchItem.CellType"
args5(1).Value = 0
args5(2).Name = "SearchItem.RowDirection"
args5(2).Value = true
args5(3).Name = "SearchItem.AllTables"
args5(3).Value = false
args5(4).Name = "SearchItem.SearchFiltered"
args5(4).Value = false
args5(5).Name = "SearchItem.Backward"
args5(5).Value = false
args5(6).Name = "SearchItem.Pattern"
args5(6).Value = false
args5(7).Name = "SearchItem.Content"
args5(7).Value = false
args5(8).Name = "SearchItem.AsianOptions"
args5(8).Value = false
args5(9).Name = "SearchItem.AlgorithmType"
args5(9).Value = 0
args5(10).Name = "SearchItem.SearchFlags"
args5(10).Value = 65536
args5(11).Name = "SearchItem.SearchString"
args5(11).Value = "XXX"
args5(12).Name = "SearchItem.ReplaceString"
args5(12).Value = ""
args5(13).Name = "SearchItem.Locale"
args5(13).Value = 255
args5(14).Name = "SearchItem.ChangedChars"
args5(14).Value = 2
args5(15).Name = "SearchItem.DeletedChars"
args5(15).Value = 2
args5(16).Name = "SearchItem.InsertedChars"
args5(16).Value = 2
args5(17).Name = "SearchItem.TransliterateFlags"
args5(17).Value = 1280
args5(18).Name = "SearchItem.Command"
args5(18).Value = 1
args5(19).Name = "SearchItem.SearchFormatted"
args5(19).Value = false
args5(20).Name = "SearchItem.AlgorithmType2"
args5(20).Value = 1
args5(21).Name = "Quiet"
args5(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args5())
rem Set Template for Headline
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Template"
args6(0).Value = "Headline"
args6(1).Name = "Family"
args6(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args6())
rem same search but replace with empty string
dim args7(21) as new com.sun.star.beans.PropertyValue
args7(0).Name = "SearchItem.StyleFamily"
args7(0).Value = 2
args7(1).Name = "SearchItem.CellType"
args7(1).Value = 0
args7(2).Name = "SearchItem.RowDirection"
args7(2).Value = true
args7(3).Name = "SearchItem.AllTables"
args7(3).Value = false
args7(4).Name = "SearchItem.SearchFiltered"
args7(4).Value = false
args7(5).Name = "SearchItem.Backward"
args7(5).Value = false
args7(6).Name = "SearchItem.Pattern"
args7(6).Value = false
args7(7).Name = "SearchItem.Content"
args7(7).Value = false
args7(8).Name = "SearchItem.AsianOptions"
args7(8).Value = false
args7(9).Name = "SearchItem.AlgorithmType"
args7(9).Value = 0
args7(10).Name = "SearchItem.SearchFlags"
args7(10).Value = 65536
args7(11).Name = "SearchItem.SearchString"
args7(11).Value = "XXX"
args7(12).Name = "SearchItem.ReplaceString"
args7(12).Value = ""
args7(13).Name = "SearchItem.Locale"
args7(13).Value = 255
args7(14).Name = "SearchItem.ChangedChars"
args7(14).Value = 2
args7(15).Name = "SearchItem.DeletedChars"
args7(15).Value = 2
args7(16).Name = "SearchItem.InsertedChars"
args7(16).Value = 2
args7(17).Name = "SearchItem.TransliterateFlags"
args7(17).Value = 1280
args7(18).Name = "SearchItem.Command"
args7(18).Value = 3
args7(19).Name = "SearchItem.SearchFormatted"
args7(19).Value = false
args7(20).Name = "SearchItem.AlgorithmType2"
args7(20).Value = 1
args7(21).Name = "Quiet"
args7(21).Value = true
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args7())
end sub
[/code]