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