CSV : ouverture sous OOo 2.4.1

Discussions à propos du tableur Calc.
Les questions sur les macros doivent être postées dans la section dédiée en dessous.

Modérateur : Vilains modOOs

Règles du forum
Cette section est uniquement dédiée au tableur Calc. Vous ne devez pas poster ici de questions sur les macros mais utiliser la section éponyme.
Avatar de l’utilisateur
Jerubuntu
Fraîchement OOthentifié
Messages : 8
Inscription : 17 mai 2008 16:23

CSV : ouverture sous OOo 2.4.1

Message par Jerubuntu »

Bonjour,

Pour le boulot, on a des fichiers CSV, séparés par des tabulations, sans " pour séparer les champs textes.

Jusqu'à maintenant, sous 2.3 (car Ubuntu Gutsy Gibbon), l'ouverture se faisait via un filtre parametrable une fois pour toute (OOo se souvenait des mode d'ouverture d'un fichier CSV à un autre). :bravo:
Mais maintenant, avec le 2.4.1 (car Ubuntu Hardy Heron), à chaque ouverture, par défaut, le séparateur est la virgule et les champs textes sont entourés de " et il nous faut à chaque fois penser à décocher, cocher la tabulation, et enlever les " (sinon, ça nous fait un fichier pas beau...) :fou:

J'ai un peu cherché mais n'ai pas trouvé : y a-t-il un moyen pour parametrer l'ouverture des CSV une fois pour toute ? :marto:
Merci !
Open Office 2.4.1 sous Ubuntu Hardy
ter33
NOOuvel adepte
NOOuvel adepte
Messages : 23
Inscription : 14 août 2008 08:55

Re: CSV : ouverture sous OOo 2.4.1

Message par ter33 »

Bonjour,

voici une solution
il faut l'ouvrir une fois en lançant la macro suivante après avoir indiqué le bon fichier.
il faut renseigner correctement tous les paramètres
et l'on récupère les options de filtre dans la cellule active du classeur

Code : Tout sélectionner

Sub aexecuter
	GetFilterOptionsFromCSVImportDialog("c:\d2.csv")
End Sub

function GetFilterOptionsFromCSVImportDialog(sUrl) as String
'===========================================================
    
    GetFilterOptionsFromCSVImportDialog = ""
	Dim oSFA as Object
	Dim oInputStream as Object
	Dim o as Object
	Dim aPropOut as Object
	
    oSFA = createUNOService ("com.sun.star.ucb.SimpleFileAccess")
    oInputStream = oSFA.openFileRead(sUrl)

    Dim aProps(3) as new com.sun.star.beans.PropertyValue
    aProps(0).Name = "FilterOptions"
    aProps(0).Value = ""
    aProps(1).Name = "URL"
    aProps(1).Value = sUrl
    aProps(2).Name = "FilterName"
    aProps(2).Value = "Text - txt - csv (StarCalc)"
    aProps(3).Name = "InputStream"
    aProps(3).Value = oInputStream

    o = createUnoService("com.sun.star.ui.dialogs.FilterOptionsDialog")
    o.setPropertyValues(aProps())

    if o.execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
      aPropOut = o.getPropertyValues()
      ThisComponent.getCurrentSelection.String=aPropOut(0).value
      'msgbox aPropOut(0).value
      GetFilterOptionsFromCSVImportDialog = aPropOut(0).Value
    endif
    oInputStream.closeInput()
end function 

ensuite on renseigne le module suivant avec ces options (ligne PysOpt = "59,0,ANSI,1,")
le fichier csv s'importe dans le classeur en cours dans une feuille nommée ARemplacer

Code : Tout sélectionner

Sub ExoCopierFeuilleParLien
	dim PysFeuille as object
	dim PysURL as string, PysFilter as string, PysOpt as string
	dim PysMode as integer
	dim oSheets As Object, oSheet As Object
	dim sUrl
			
	oSheets = thisComponent.Sheets
	If oSheets.hasByName("ARemplacer") Then
		PysFeuille = oSheets.getByName("ARemplacer")
	Else
		PysFeuille = thisComponent.createInstance("com.sun.star.sheet.Spreadsheet")
		oSheets.insertByName("ARemplacer", PysFeuille)
		PysFeuille.IsVisible = True
	End If
			
	'--L'adresse du fichier CSV
	'PysURL = convertToUrl("d:\fc.csv")	
	'--Cette ligne pour sélectionner dans une boîte de dialogue
	PysURL= BrowseForFile("Sélectionner un fichier csv", "Fichier CSV", "d:\", "*.csv")
	
	if PysURL <>"" then		
		'--Paramètres nécessaires à la copie
		PysFilter = "Text - txt - csv (StarCalc)"
		PysOpt = "59,0,ANSI,1,"		'Adapter en fonction du fichier CSV
		PysMode = com.sun.star.sheet.SheetLinkMode.NORMAL
		
		'--Insertion de la feuille par "lien"
		PysFeuille.link(PysURL, "", PysFilter, PysOpt, PysMode)
		
		'--Déconnection du lien
		PysFeuille.setLinkSheetName("") 
		PysFeuille.LinkDisplayName
		PysFeuille.LinkUrl=""
		PysFeuille.setLinkMode(com.sun.star.sheet.SheetLinkMode.NONE) 
	end if
	
End Sub
function BrowseForFile(sTitle as String, sFilterName as String, sStartDirectory as String, sFilter as String) as String
'======================================================================
	dim ars, o
	o=CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
	o.setTitle(sTitle)
	o.appendFilter(  sFilterName & " (" & sFilter & ")", sFilter)
	o.setMultiSelectionMode(false)
	o.setDisplayDirectory(ConvertToUrl(sStartDirectory))
	
	if o.execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
	  ars = o.getFiles()
	  BrowseForFile = ars(UBound(ars))
	else
	  BrowseForFile = ""
	endif
end function

 
il ne reste plus qu'à lancer ce dernier module à chaque fois que l'on veut importer le fichier
l'espère avoir été assez précise
tous ces codes ont été trouvé sur ce forum
Window XP + OpenOffice 2.3
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: CSV : ouverture sous OOo 2.4.1

Message par Dude »

Jerubuntu a écrit :Jusqu'à maintenant, sous 2.3 (car Ubuntu Gutsy Gibbon), l'ouverture se faisait via un filtre parametrable une fois pour toute (OOo se souvenait des mode d'ouverture d'un fichier CSV à un autre).
Etonnant car pour moi, le filtre de l''import CSV n'est pas enregistrable. Il y a d'ailleurs la (vieille) demande d'amélioration 14675 avec seulement 2 voix.

Faut voter et ajouter la balise [Issue] pour l'appel au vote.

:!:
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues
jumbo444
InconditiOOnnel
InconditiOOnnel
Messages : 769
Inscription : 10 mars 2006 12:09
Localisation : Rouen, France

Re: CSV : ouverture sous OOo 2.4.1

Message par jumbo444 »

Bonsoir,

D'ailleurs cette issue ressemble bigrement à l'issue 3687. Cette dernière issue semble beaucoup plus active et le vote aura plus d'intérêt.
LibO 5.4.6.2 sous Ubuntu 16.04
Avatar de l’utilisateur
Jerubuntu
Fraîchement OOthentifié
Messages : 8
Inscription : 17 mai 2008 16:23

Re: CSV : ouverture sous OOo 2.4.1

Message par Jerubuntu »

(dsl du temps de réponse)

Merci des infos, je regarde ça sous peu.
Mais (question bête) : c'est quoi, ces issue
Open Office 2.4.1 sous Ubuntu Hardy
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25184
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: CSV : ouverture sous OOo 2.4.1

Message par Dude »

Jerubuntu a écrit :Mais (question bête) : c'est quoi, ces issue
Si je te réponds : aller dans la section "A lire avant tout", regarder les signatures, faire une recherche...

:?:
Poser une question, c'est bien. Répondre aux autres, c'est encore mieux.
Améliorez AOO et votez pour les issues