1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
{ Connection à Open Office ... et ouverture d'un nouveau document ... }
OpenOffice := CreateOleObject('com.sun.star.ServiceManager');
OpenDesktop := OpenOffice.createInstance('com.sun.star.frame.Desktop');
CoreReflection := OpenOffice.createInstance('com.sun.star.reflection.CoreReflection');
{ Ouvre un document vierge ... }
dPropertyValue := VarArrayCreate([0, 3], varVariant);
dPropertyValue[0] := CreatePropertyValue( 'AsTemplate' , True );
dPropertyValue[1] := CreatePropertyValue( 'Hidden' , False );
dPropertyValue[2] := CreatePropertyValue( 'ReadOnly' , False );
dPropertyValue[3] := CreatePropertyValue( 'Password' , '' );
Document := OpenDesktop.LoadComponentFromURL( 'file:///'+ StringReplace('C:\Export\DDT3GR.Bib', '\', '/',[rfReplaceAll]),'_blank',
0,dPropertyValue); //VarArrayCreate([0, - 1], varVariant));
DocumentSetting := Document.createInstance('com.sun.star.text.DocumentSettings');
sSource := 'file:///'+ StringReplace('C:\Export\Dossier.Txt', '\', '/',[rfReplaceAll]);
Datacontext:=OpenOffice.createInstance('com.sun.star.sdb.DatabaseContext');
// creation d'un tableau dynamique de propertyvalues qui définissent le format de la datasource
arguments:= VarArrayCreate([0,7], varVariant);
arguments[0]:= createPropertyValue('Extension','txt' );
arguments[1]:= createPropertyValue('CharSet','ISO-8859-15') ;//ou 'ISO646-FR1'
arguments[2]:= createPropertyValue('FixedLength',true) ;
arguments[3]:= createPropertyValue('HeaderLine',true) ;
arguments[4]:= createPropertyValue('FieldDelimiter',';') ;
arguments[5]:= createPropertyValue('StringDelimiter','"') ;
arguments[6]:= createPropertyValue('DecimalDelimiter','.') ;
arguments[7]:= createPropertyValue('ThousandDelimiter',',') ;
//création de la datasource avec parametres
instance:=Datacontext.createInstance;
instance.URL := 'sdbc:flat:'+ sSource;
instance.Info := arguments;
instance.DatabaseDocument.storeAsUrl('file:///' + StringReplace('C:\Export\OOoDB\MySourceDossier0.odb', '\', '/',[rfReplaceAll]), VarArrayCreate([0, - 1], varVariant));
datacontext.registerObject('Dossier',instance);
Connection:=instance.getconnection('','');
DocumentSetting.CurrentDatabaseDataSource := 'Dossier';
DocumentSetting.CurrentDatabaseCommand := 'Dossier';
DocumentSetting.CurrentDatabaseCommandType := 0;
{ Cas d'un ancier modéle Word que l'onconverti en OOo ... }
{ Cette partie la réassocie les champs de fusion avec la Source de donnée }
oEnum := Document.getTextFields.createEnumeration;
While oEnum.hasMoreElements Do
Begin
thisField := oEnum.nextElement;
If thisField.SupportsService('com.sun.star.text.TextField.Database') then
Begin
TFM := thisField.getTextFieldMaster;
TFM.DataBaseName := 'Dossier';
TFM.DataTableName := 'Dossier';
End;
End;
Document.StoreAsURL('file:///c:/export/DDT3GR.Odt', VarArrayCreate([0, -1], varVariant)); { Convertie notre modéle WOrd en Doc ... }
Document.Dispose; |
Partager