[Basic] Vider un fichier TXT à éditer

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !

[Basic] Vider un fichier TXT à éditer

Messagepar Xunor » 12 Août 2018 11:08

Bonjour,
je voudrais exporter dans un fichier texte, et vider le contenu si le fichier existe déjà
J'ai fait ceci :
Code : Tout sélectionner   AgrandirRéduire
Sub testExportFichier(nom_f as String)
   Dim myTextFile As Object, sf As Object, fileStream As Object
   Dim myFilePath As String
   sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
   fileStream = sf.openFileWrite(nom_fKML)
   myTextFile = createUnoService("com.sun.star.io.TextOutputStream")
   myTextFile.OutputStream = fileStream
   myTextFile.Encoding = "UTF-8"
     myTextFile.writeString("texte test" & chr(10))
   fileStream.closeOutput
   myTextFile.closeOutput
end Sub

Mais là je ne fait qu'écrire dans le fichier sans le vider.

Bien sûr je pourrais le supprimer pour le recréer, mais ça ne me plait pas trop, je suis sûr que ça fait partie des trucs "simples" mais je n'ai pas réussi à trouver << Honte sur moi !
Je pense que c'est dans le mode d'ouverture que la solution se cache (sans certitude)
Code : Tout sélectionner   AgrandirRéduire
   sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")


Merci pour votre attention ;)
Programmeur relativement expérimenté (on n'est jamais expert ;) )
Débutant Open Office (adieu Microsoft et ses incompatibilités)
principalement avec Apache OpenOffice 4.1.2 sous Windows 10 Famille
Xunor
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 02 Août 2018 12:02

Re: [Basic] Vider un fichier TXT à éditer

Messagepar Dude » 12 Août 2018 14:41

Avec une commande Shell, il suffit d'envoyer une instruction système Windows telle que :
Code : Tout sélectionner   AgrandirRéduire
copy /y nul test.txt
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20142
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1

Re: [Basic] Vider un fichier TXT à éditer

Messagepar martinbrait » 12 Août 2018 15:10

Bonjour Xunor, Dude,


Je ne trouve pas les propriétés adéquates
pour le service "com.sun.star.ucb.SimpleFileAccess"
Variante possible, en OooBasic :
'========================================
Code : Tout sélectionner   AgrandirRéduire
Sub TestEcrireDansFichierTxt()
'EcrireEtRemplacer("c:\temp\test.txt")
EcrireAlaSuite("c:\temp\test.txt")
End Sub




'=========================================
'écrire et remplacer contenu fichier texte
'=========================================
Code : Tout sélectionner   AgrandirRéduire
Sub EcrireEtRemplacer(strSourceFilePath As String)
Dim FileNo As Integer
Dim Filename As String
dim Currentline as string

'Doc = ThisComponent
'Sheet = Doc.Sheets(0)

'Cell = Sheet.getCellRangeByName("D11")
'caseid = Cell.String


'Cell2 = Sheet.getCellRangeByName("D12")
'EmpCode = Cell2.String

'Cell3 = Sheet.getCellRangeByName("D13")
'EmpName = Cell3.String

strSourceFilePath = ConvertToUrl(strSourceFilePath) ' Garantit format windows/linux de l'url
FileNo = FreeFile               ' Establish free file handle

Open strSourceFilePath For Output As #FileNo

'Print #FileNo, currentline &  caseid  & " " & EmpCode & " " & EmpName
Print #FileNo, ("texte test remplace1" & Chr(10) & Chr(13))
Print #FileNo, ("texte test remplace2" & Chr(10) & Chr(13))
Print #FileNo, ("texte test remplace3" & Chr(10) & Chr(13))
Print #FileNo, ("texte test remplace4" & Chr(10) & Chr(13))

Close #FileNo                 

End Sub


'====================================
'écrire à la suite d'un fichier texte
'=====================================
Code : Tout sélectionner   AgrandirRéduire
Sub EcrireAlaSuite(strSourceFilePath As String)
Dim FileNo As Integer
Dim Filename As String
dim Currentline as string

'Doc = ThisComponent
'Sheet = Doc.Sheets(0)

'Cell = Sheet.getCellRangeByName("D11")
'caseid = Cell.String


'Cell2 = Sheet.getCellRangeByName("D12")
'EmpCode = Cell2.String

'Cell3 = Sheet.getCellRangeByName("D13")
'EmpName = Cell3.String


strSourceFilePath = ConvertToUrl(strSourceFilePath)' Garantit format windows/linux de l'url
FileNo = FreeFile               ' Establish free file handle

Open strSourceFilePath For Append As #FileNo

'Print #FileNo, currentline &  caseid  & " " & EmpCode & " " & EmpName
Print #FileNo, ("texte test à la suite1" & Chr(10) & Chr(13))
Print #FileNo, ("texte test à la suite2" & Chr(10) & Chr(13))
Print #FileNo, ("texte test à la suite3" & Chr(10) & Chr(13))
Print #FileNo, ("texte test à la suite4" & Chr(10) & Chr(13))

Close #FileNo                 

End Sub


Merci et à bientôt !
LibreOffice version 5.1.6.2
Windows 10
+
LibreOffice version 4.3.6.2.0
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
martinbrait
PassiOOnné
PassiOOnné
 
Message(s) : 739
Inscrit le : 09 Avr 2013 08:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Basic] Vider un fichier TXT à éditer

Messagepar Xunor » 12 Août 2018 16:20

Merci Dude et martinbrait
Il s'agit là pour moi de solutions de contournement...
Il doit bien y avoir moyen de faire ça proprement
martinbrait a écrit:'=========================================
'écrire et remplacer contenu fichier texte
'=========================================
Code : Tout sélectionner   AgrandirRéduire
Sub EcrireEtRemplacer(strSourceFilePath As String)
Dim FileNo As Integer
Dim Filename As String
dim Currentline as string

strSourceFilePath = ConvertToUrl(strSourceFilePath) ' Garantit format windows/linux de l'url
FileNo = FreeFile               ' Establish free file handle

Open strSourceFilePath For Output As #FileNo
Print #FileNo, ("texte test remplace1" & Chr(10) & Chr(13))
Close #FileNo                 
End Sub


Cette technique est la technique classique d'écriture de fichier mais ne permet pas (à ma connaissance) de gérer les format d'encodage des caractères
Pour la fonction "EcrireAlaSuite()" ce n'est pas mon besoin, et je sais le gérer simplement
Un grand merci tout de même pour ton temps et tes idées

Dude a écrit:Avec une commande Shell, il suffit d'envoyer une instruction système Windows telle que :
Code : Tout sélectionner   AgrandirRéduire
copy /y nul test.txt

Ca ca me plait pas du tout ;) faire appel à un shell extérieur pour gérer la remise à zéro d'un fichier me semble à éviter. Merci tout de même

Vos participation Dude et martinbrait me donnent 3 nouvelles idées que je vais creuser ;)
Je repasse bientôt en donnant la réponse (j'espère)
Programmeur relativement expérimenté (on n'est jamais expert ;) )
Débutant Open Office (adieu Microsoft et ses incompatibilités)
principalement avec Apache OpenOffice 4.1.2 sous Windows 10 Famille
Xunor
NOOuvel adepte
NOOuvel adepte
 
Message(s) : 12
Inscrit le : 02 Août 2018 12:02

Re: [Basic] Vider un fichier TXT à éditer

Messagepar Hubert Lambert » 12 Août 2018 19:34

Bonjour,

Regarde ici : https://www.openoffice.org/api/docs/com ... cess2.html.

Par ailleurs :
Xunor a écrit:Bien sûr je pourrais le supprimer pour le recréer, mais ça ne me plait pas trop,

C'est pourtant exactement ce que proposent les développeurs dans l'exemple suivant, extrait du module UCB de la bibliothèqe Tools de la section Macros OpenOffice :
Code : Tout sélectionner   AgrandirRéduire
Sub SaveDataToFile(FilePath as String, DataList())
Dim FileChannel as Integer
Dim i as Integer
Dim oFile as Object
Dim oOutputStream as Object
Dim oStreamString as Object
Dim oUcb as Object
Dim sCRLF as String

   sCRLF = CHR(13) & CHR(10)
   oUcb = createUnoService("com.sun.star.ucb.SimpleFileAccess")
   oOutputStream = createUnoService("com.sun.star.io.TextOutputStream")
   If oUcb.Exists(FilePath) Then
      oUcb.Kill(FilePath)
   End If
   oFile = oUcb.OpenFileReadWrite(FilePath)
   oOutputStream.SetOutputStream(oFile.GetOutputStream)
   For i = 0 To Ubound(DataList())
      oOutputStream.WriteString(DataList(i) & sCRLF)
   Next i
   oOutputStream.CloseOutput()
End Sub

Cordialement.
AOOo 4.1.2 sur Win7
AOOo 4.1.x sur Linux Mint
LibreOffice 5.x/6.x sur Linux Mint
--
| « Nos défauts devraient nous donner une qualité : l'indulgence pour les défauts des autres » (Rivarol)
Avatar de l’utilisateur
Hubert Lambert
InconditiOOnnel
InconditiOOnnel
 
Message(s) : 919
Inscrit le : 06 Avr 2016 08:26

Re: [Basic] Vider un fichier TXT à éditer

Messagepar martinbrait » 12 Août 2018 21:18

Bonjour Xunor, HubertLambert,

Pour info, simple variante, qui efface sans supprimer le fichier existant.
Penser à adapter la seconde fonction,
pour y ajouter un paramètre entrant, recevant
les données à écrire(string, tableau etc...)


Liste des encodages possibles, fournie :

Code : Tout sélectionner   AgrandirRéduire
'LISTE DES  ENCODAGES POSSIBLES /

' { "ISO-IR-6", RTL_TEXTENCODING_ASCII_US },
' { "ANSI_X3.4-1986", RTL_TEXTENCODING_ASCII_US },
' { "ISO_646.IRV:1991", RTL_TEXTENCODING_ASCII_US },
' { "ASCII", RTL_TEXTENCODING_ASCII_US },
' { "ISO646-US", RTL_TEXTENCODING_ASCII_US },
' { "US", RTL_TEXTENCODING_ASCII_US },
' { "IBM367", RTL_TEXTENCODING_ASCII_US },
' { "CP367", RTL_TEXTENCODING_ASCII_US },
' { "CSASCII", RTL_TEXTENCODING_ASCII_US },

' { "ISO-8859-1", RTL_TEXTENCODING_ISO_8859_1 },
' { "ISO_8859-1:1987", RTL_TEXTENCODING_ISO_8859_1 },
' { "ISO-IR-100", RTL_TEXTENCODING_ISO_8859_1 },
' { "ISO_8859-1", RTL_TEXTENCODING_ISO_8859_1 },
' { "LATIN1", RTL_TEXTENCODING_ISO_8859_1 },
' { "L1", RTL_TEXTENCODING_ISO_8859_1 },
' { "IBM819", RTL_TEXTENCODING_ISO_8859_1 },
' { "CP819", RTL_TEXTENCODING_ISO_8859_1 },
' { "CSISOLATIN1", RTL_TEXTENCODING_ISO_8859_1 },

' { "ISO-8859-2", RTL_TEXTENCODING_ISO_8859_2 },
' { "ISO_8859-2:1987", RTL_TEXTENCODING_ISO_8859_2 },
' { "ISO-IR-101", RTL_TEXTENCODING_ISO_8859_2 },
' { "ISO_8859-2", RTL_TEXTENCODING_ISO_8859_2 },
' { "LATIN2", RTL_TEXTENCODING_ISO_8859_2 },
' { "L2", RTL_TEXTENCODING_ISO_8859_2 },
' { "CSISOLATIN2", RTL_TEXTENCODING_ISO_8859_2 },

' { "ISO-8859-3", RTL_TEXTENCODING_ISO_8859_3 },
' { "ISO_8859-3:1988", RTL_TEXTENCODING_ISO_8859_3 },
' { "ISO-IR-109", RTL_TEXTENCODING_ISO_8859_3 },
' { "ISO_8859-3", RTL_TEXTENCODING_ISO_8859_3 },
' { "LATIN3", RTL_TEXTENCODING_ISO_8859_3 },
' { "L3", RTL_TEXTENCODING_ISO_8859_3 },
' { "CSISOLATIN3", RTL_TEXTENCODING_ISO_8859_3 },

' { "ISO-8859-4", RTL_TEXTENCODING_ISO_8859_4 },
' { "ISO_8859-4:1988", RTL_TEXTENCODING_ISO_8859_4 },
' { "ISO-IR-110", RTL_TEXTENCODING_ISO_8859_4 },
' { "ISO_8859-4", RTL_TEXTENCODING_ISO_8859_4 },
' { "LATIN4", RTL_TEXTENCODING_ISO_8859_4 },
' { "L4", RTL_TEXTENCODING_ISO_8859_4 },
' { "CSISOLATIN4", RTL_TEXTENCODING_ISO_8859_4 },

' { "ISO-8859-5", RTL_TEXTENCODING_ISO_8859_5 },
' { "ISO_8859-5:1988", RTL_TEXTENCODING_ISO_8859_5 },
' { "ISO-IR-144", RTL_TEXTENCODING_ISO_8859_5 },
' { "ISO_8859-5", RTL_TEXTENCODING_ISO_8859_5 },
' { "CYRILLIC", RTL_TEXTENCODING_ISO_8859_5 },
' { "CSISOLATINCYRILLIC", RTL_TEXTENCODING_ISO_8859_5 },

' { "ISO-8859-6", RTL_TEXTENCODING_ISO_8859_6 },
' { "ISO_8859-6:1987", RTL_TEXTENCODING_ISO_8859_6 },
' { "ISO-IR-127", RTL_TEXTENCODING_ISO_8859_6 },
' { "ISO_8859-6", RTL_TEXTENCODING_ISO_8859_6 },
' { "ECMA-114", RTL_TEXTENCODING_ISO_8859_6 },
' { "ASMO-708", RTL_TEXTENCODING_ISO_8859_6 },
' { "ARABIC", RTL_TEXTENCODING_ISO_8859_6 },
' { "CSISOLATINARABIC", RTL_TEXTENCODING_ISO_8859_6 },

' { "ISO-8859-7", RTL_TEXTENCODING_ISO_8859_7 },
' { "ISO_8859-7:1987", RTL_TEXTENCODING_ISO_8859_7 },
' { "ISO-IR-126", RTL_TEXTENCODING_ISO_8859_7 },
' { "ISO_8859-7", RTL_TEXTENCODING_ISO_8859_7 },
' { "ELOT_928", RTL_TEXTENCODING_ISO_8859_7 },
' { "ECMA-118", RTL_TEXTENCODING_ISO_8859_7 },
' { "GREEK", RTL_TEXTENCODING_ISO_8859_7 },
' { "GREEK8", RTL_TEXTENCODING_ISO_8859_7 },
' { "CSISOLATINGREEK", RTL_TEXTENCODING_ISO_8859_7 },

' { "ISO-8859-8", RTL_TEXTENCODING_ISO_8859_8 },
' { "ISO_8859-8:1988", RTL_TEXTENCODING_ISO_8859_8 },
' { "ISO-IR-138", RTL_TEXTENCODING_ISO_8859_8 },
' { "ISO_8859-8", RTL_TEXTENCODING_ISO_8859_8 },
' { "HEBREW", RTL_TEXTENCODING_ISO_8859_8 },
' { "CSISOLATINHEBREW", RTL_TEXTENCODING_ISO_8859_8 },

' { "ISO-8859-9", RTL_TEXTENCODING_ISO_8859_9 },
' { "ISO_8859-9:1989", RTL_TEXTENCODING_ISO_8859_9 },
' { "ISO-IR-148", RTL_TEXTENCODING_ISO_8859_9 },
' { "ISO_8859-9", RTL_TEXTENCODING_ISO_8859_9 },
' { "LATIN5", RTL_TEXTENCODING_ISO_8859_9 },
' { "L5", RTL_TEXTENCODING_ISO_8859_9 },
' { "CSISOLATIN5", RTL_TEXTENCODING_ISO_8859_9 },

' { "ISO-8859-14", RTL_TEXTENCODING_ISO_8859_14 }, // RFC 2047
' { "ISO_8859-15", RTL_TEXTENCODING_ISO_8859_15 },
' { "ISO-8859-15", RTL_TEXTENCODING_ISO_8859_15 }, // RFC 2047

' { "MACINTOSH", RTL_TEXTENCODING_APPLE_ROMAN },
' { "MAC", RTL_TEXTENCODING_APPLE_ROMAN },
' { "CSMACINTOSH", RTL_TEXTENCODING_APPLE_ROMAN },

' { "IBM437", RTL_TEXTENCODING_IBM_437 },
' { "CP437", RTL_TEXTENCODING_IBM_437 },
' { "437", RTL_TEXTENCODING_IBM_437 },
' { "CSPC8CODEPAGE437", RTL_TEXTENCODING_IBM_437 },

' { "IBM850", RTL_TEXTENCODING_IBM_850 },
' { "CP850", RTL_TEXTENCODING_IBM_850 },
' { "850", RTL_TEXTENCODING_IBM_850 },
' { "CSPC850MULTILINGUAL", RTL_TEXTENCODING_IBM_850 },

' { "IBM860", RTL_TEXTENCODING_IBM_860 },
' { "CP860", RTL_TEXTENCODING_IBM_860 },
' { "860", RTL_TEXTENCODING_IBM_860 },
' { "CSIBM860", RTL_TEXTENCODING_IBM_860 },

' { "IBM861", RTL_TEXTENCODING_IBM_861 },
' { "CP861", RTL_TEXTENCODING_IBM_861 },
' { "861", RTL_TEXTENCODING_IBM_861 },
' { "CP-IS", RTL_TEXTENCODING_IBM_861 },
' { "CSIBM861", RTL_TEXTENCODING_IBM_861 },

' { "IBM863", RTL_TEXTENCODING_IBM_863 },
' { "CP863", RTL_TEXTENCODING_IBM_863 },
' { "863", RTL_TEXTENCODING_IBM_863 },
' { "CSIBM863", RTL_TEXTENCODING_IBM_863 },

' { "IBM865", RTL_TEXTENCODING_IBM_865 },
' { "CP865", RTL_TEXTENCODING_IBM_865 },
' { "865", RTL_TEXTENCODING_IBM_865 },
' { "CSIBM865", RTL_TEXTENCODING_IBM_865 },

' { "IBM775", RTL_TEXTENCODING_IBM_775 },
' { "CP775", RTL_TEXTENCODING_IBM_775 },
' { "CSPC775BALTIC", RTL_TEXTENCODING_IBM_775 },

' { "IBM852", RTL_TEXTENCODING_IBM_852 },
' { "CP852", RTL_TEXTENCODING_IBM_852 },
' { "852", RTL_TEXTENCODING_IBM_852 },
' { "CSPCP852", RTL_TEXTENCODING_IBM_852 },

' { "IBM855", RTL_TEXTENCODING_IBM_855 },
' { "CP855", RTL_TEXTENCODING_IBM_855 },
' { "855", RTL_TEXTENCODING_IBM_855 },
' { "CSIBM855", RTL_TEXTENCODING_IBM_855 },

' { "IBM857", RTL_TEXTENCODING_IBM_857 },
' { "CP857", RTL_TEXTENCODING_IBM_857 },
' { "857", RTL_TEXTENCODING_IBM_857 },
' { "CSIBM857", RTL_TEXTENCODING_IBM_857 },

' { "IBM862", RTL_TEXTENCODING_IBM_862 },
' { "CP862", RTL_TEXTENCODING_IBM_862 },
' { "862", RTL_TEXTENCODING_IBM_862 },
' { "CSPC862LATINHEBREW", RTL_TEXTENCODING_IBM_862 },

' { "IBM864", RTL_TEXTENCODING_IBM_864 },
' { "CP864", RTL_TEXTENCODING_IBM_864 },
' { "CSIBM864", RTL_TEXTENCODING_IBM_864 },

' { "IBM866", RTL_TEXTENCODING_IBM_866 },
' { "CP866", RTL_TEXTENCODING_IBM_866 },
' { "866", RTL_TEXTENCODING_IBM_866 },
' { "CSIBM866", RTL_TEXTENCODING_IBM_866 },

' { "IBM869", RTL_TEXTENCODING_IBM_869 },
' { "CP869", RTL_TEXTENCODING_IBM_869 },
' { "869", RTL_TEXTENCODING_IBM_869 },
' { "CP-GR", RTL_TEXTENCODING_IBM_869 },
' { "CSIBM869", RTL_TEXTENCODING_IBM_869 },

' { "WINDOWS-1250", RTL_TEXTENCODING_MS_1250 },
' { "WINDOWS-1251", RTL_TEXTENCODING_MS_1251 },
' { "WINDOWS-1253", RTL_TEXTENCODING_MS_1253 },
' { "WINDOWS-1254", RTL_TEXTENCODING_MS_1254 },
' { "WINDOWS-1255", RTL_TEXTENCODING_MS_1255 },
' { "WINDOWS-1256", RTL_TEXTENCODING_MS_1256 },
' { "WINDOWS-1257", RTL_TEXTENCODING_MS_1257 },
' { "WINDOWS-1258", RTL_TEXTENCODING_MS_1258 },

' { "SHIFT_JIS", RTL_TEXTENCODING_SHIFT_JIS },
' { "MS_KANJI", RTL_TEXTENCODING_SHIFT_JIS },
' { "CSSHIFTJIS", RTL_TEXTENCODING_SHIFT_JIS },

' { "GB2312", RTL_TEXTENCODING_GB_2312 },
' { "CSGB2312", RTL_TEXTENCODING_GB_2312 },

' { "BIG5", RTL_TEXTENCODING_BIG5 },
' { "CSBIG5", RTL_TEXTENCODING_BIG5 },

' { "EUC-JP", RTL_TEXTENCODING_EUC_JP },
' { "EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE",
'   RTL_TEXTENCODING_EUC_JP },
' { "CSEUCPKDFMTJAPANESE", RTL_TEXTENCODING_EUC_JP },

' { "ISO-2022-JP", RTL_TEXTENCODING_ISO_2022_JP },
' { "CSISO2022JP", RTL_TEXTENCODING_ISO_2022_JP },
' { "ISO-2022-CN", RTL_TEXTENCODING_ISO_2022_CN },

' { "KOI8-R", RTL_TEXTENCODING_KOI8_R },
' { "CSKOI8R", RTL_TEXTENCODING_KOI8_R },

' { "UTF-7", RTL_TEXTENCODING_UTF7 },
' { "UTF-8", RTL_TEXTENCODING_UTF8 },

' { "ISO-8859-10", RTL_TEXTENCODING_ISO_8859_10 }, // RFC 2047
' { "ISO-8859-13", RTL_TEXTENCODING_ISO_8859_13 }, // RFC 2047

' { "EUC-KR", RTL_TEXTENCODING_EUC_KR },
' { "CSEUCKR", RTL_TEXTENCODING_EUC_KR },

' { "ISO-2022-KR", RTL_TEXTENCODING_ISO_2022_KR },
' { "CSISO2022KR", RTL_TEXTENCODING_ISO_2022_KR },

' { "ISO-10646-UCS-4", RTL_TEXTENCODING_UCS4 },
' { "CSUCS4", RTL_TEXTENCODING_UCS4 },

' { "ISO-10646-UCS-2", RTL_TEXTENCODING_UCS2 },
' { "CSUNICODE", RTL_TEXTENCODING_UCS2 } };




Option Explicit
Private strFilePath As String


'tout réécrire, en UTF8, ou avec l'encodage de son choix
Sub TestReEcrireUTF8()
strFilePath= "c:\temp\test3.txt"
CleanTxtFile(strFilePath)
WriteEncodedText(strFilePath)
End Sub


Sub CleanTxtFile(strFilePath As String)
Dim myTextFile As Object, sf As Object, fileStream As Object
Dim MyFilePath As String
Dim Fichier As String
Dim FileNo As Integer

MyFilePath = convertToURL(strFilePath)
' Garantit format windows/linux de l'url

'utiliser la fonction FileExists pour vérifier l'existence d'un fichier :
If FileExists(MyFilePath) = True Then
'

FileNo = FreeFile               ' Establish free file handle

Open MyFilePath For Output As #FileNo
Print #FileNo, ""'efface tout
Close #FileNo

End If

End Sub

Sub WriteEncodedText(strFilePath As String,Optional strEncodage As String)
Dim myTextFile As Object, sf As Object, fileStream As Object
Dim myFilePath As String

myFilePath = convertToURL(strFilePath)

If FileExists(myFilePath) = True Then
print myFilePath
sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
On Error Goto fichierKO
fileStream = sf.openFileWrite(myFilePath)
myTextFile = createUnoService("com.sun.star.io.TextOutputStream")
myTextFile.OutputStream = fileStream
If IsMissing(strEncodage) Then
strEncodage= """" & "UTF-8" & """"
End If
myTextFile.Encoding = strEncodage
'myTextFile.Encoding = "UTF-8"
'myTextFile.Encoding = "IBM850" ' encodage DOS
myTextFile.writeString("À Lætitia, tous nos vœux " & chr(10))
myTextFile.writeString("Ø å Å Æ Œ " & chr(10))

fileStream.closeOutput
myTextFile.closeOutput
On Error Goto 0
End If
Exit Sub

FichierKO:
Resume FichierKO2
FichierKO2:
On Error Resume Next
MsgBox("File write error !", 16)
fileStream.closeOutput
myTextFile.closeOutput
On Error Goto 0
End Sub


@+
Dernière édition par martinbrait le 13 Août 2018 11:11, édité 2 fois.
LibreOffice version 5.1.6.2
Windows 10
+
LibreOffice version 4.3.6.2.0
Windows 7

#HSQL Database Engine 1.8.0
version=1.8.0


Bonjour, merci et à bientôt !
Avatar de l’utilisateur
martinbrait
PassiOOnné
PassiOOnné
 
Message(s) : 739
Inscrit le : 09 Avr 2013 08:15
Localisation : T'as pas dit bonjour, merci et à bientot !

Re: [Basic] Vider un fichier TXT à éditer

Messagepar Jurassic Pork » 13 Août 2018 06:21

hello,
pour vider le fichier texte à l'ouverture tu peux utiliser la méthode truncate sur son flux :
Methods' Summary
truncate : sets the size of the underlying data of the stream to zero.


exemple d'utilisation :
Code : Tout sélectionner   AgrandirRéduire
Sub testExportFichier()
   Dim myTextStream, sf, fileStream As Object
   Dim nom_fKML As String
   nom_fKML = ConvertToURL("M:\temp\test.kml")
   sf = createUnoService("com.sun.star.ucb.SimpleFileAccess")
   fileStream = sf.openFileWrite(nom_fKML)
   fileStream.truncate()
   myTextStream = createUnoService("com.sun.star.io.TextOutputStream")
   myTextStream.OutputStream = fileStream
   myTextStream.Encoding = "UTF-8"
   myTextStream.writeString("texte test" & chr(10))
   fileStream.closeOutput
   myTextStream.closeOutput
end Sub


Ami calmant, J.P
LibreOffice 5.x sous windows et linux
Avatar de l’utilisateur
Jurassic Pork
Membre hOOnoraire
Membre hOOnoraire
 
Message(s) : 154
Inscrit le : 09 Août 2017 23:15


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)