Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Bonjour


gmalol wrote
j'ai la commande pour convertir un xls en csv, mais je ne sais pas comment
sélectionner une seule feuille (onglet).

On serait tenté (en tout cas je l'ai été) d'utiliser une syntaxe du type :
--convert-to csv file.xls#NomFeuille

Hélas cela ne fonctionne pas (du moins dans mon environnement windows).

Du coup, une proposition serait d'appeler une macro depuis la ligne de
commnde. La macro reçoit en argument l'url du classeur et le nom de
la feuille concernée.

Exemple ligne de commande  (ci-dessous syntaxe windows):

"\Program Files (x86)\LibreOffice 4\program\soffice.exe" --invisible
"macro:///Standard.Module1.PysConvertXlsToCsv(C:\Tests\a.xls,Feuille2)"

Nota: pas d'espace après la virgule devant le nom de feuille (serait pris
comme faisant partie du nom).

Avec une macro appelée du type:

Sub PysConvertXlsToCsv(sUrlDoc as string, sNomFeuille as string)

dim oClasseur as object
dim Prop1(0) as new com.sun.star.beans.PropertyValue
dim Prop2(1) as new com.sun.star.beans.PropertyValue
dim oFeuilles as object, oFeuille as object

if FileExists(sUrlDoc) then
        sUrlDoc = convertToUrl(sUrlDoc)
        
        Prop1(0).name = "FilterName"
        Prop1(0).value = "MS Excel 97"

        oClasseur = StarDesktop.loadComponentFromURL(sUrlDoc, "_blank", 0, Prop1()
)
        oFeuilles = oClasseur.sheets

        if      oFeuilles.hasByName(sNomFeuille) then
                oFeuille = oFeuilles.getByName(sNomFeuille)
                oClasseur.currentController.activeSheet = oFeuille
                
                Prop2(0).name = "FilterName"
                Prop2(0).value = "Text - txt - csv (StarCalc)"
                Prop2(1).name = "FilterOptions"
                Prop2(1).value = "9,39,STANDARD,1"
                
                GlobalScope.BasicLibraries.LoadLibrary("Tools")
                sUrlDoc = GetFileNameWithoutExtension(sUrlDoc) & ".csv"
                oClasseur.storeToUrl(sUrlDoc, Prop2())
        end if
        on error resume next
        oClasseur.close(True)
        on error goto 0 
end if

End Sub

Nota...

1. On traite quelques erreurs potentielles
- url inexistant
- nom de feuille incorrect
2. Il faudrait adapter le format selon tes besoins 

Bon... pas vraiment ce que tu demandes mais peut-être une
piste à creuser.

Cordialement
Pierre-Yves





--
View this message in context: 
http://nabble.documentfoundation.org/convert-xls-to-csv-convertir-un-xls-vers-csv-under-linux-tp4080201p4080593.html
Sent from the Users mailing list archive at Nabble.com.

-- 
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir comment vous désinscrire
Les archives de la liste sont disponibles à http://listarchives.libreoffice.org/fr/users/
Tous les messages envoyés sur cette liste seront archivés publiquement et ne pourront pas être 
supprimés

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.