
Avviare il software LibreOffice con parametri permette agli utenti esperti di influenzare il comportamento e le prestazioni del programma. In particolare, tramite il parametro --convert-to è possibile effettuare conversioni tra i vari formati di file supportati. Qui vedremo un esempio di conversione da csv a ods con qualche osservazione aggiuntiva sulle accortezze necessarie per convertire file in batch in ambiente Windows.
Ecco un esempio di comando di conversione da csv a ods in ambiente Windows, supponendo che il software sia stato installato nel percorso standard:
"C:\Program Files\LibreOffice\program\soffice.exe"^
--convert-to ods^
--infilter="csv:44,34,76,1,11/5,1033,false,false,true"^
document.csv
Il parametro --infilter sarà descritto più avanti. Qui osserviamo è teoricamente possibile utilizzare i caratteri jolly per convertire più file, ma in pratica la conversione funzionerà solo per un file a causa dell'impossibilità di avviare più istanze di LibreOffice contemporaneamente. Il problema è descritto alla pagina: Using the --convert-to command-line function to convert formats under Windows 10.
Si può ovviare al problema utilizzando nel nostro file batch un ciclo simile al seguente:
for %%f in (*.csv) do (
start /wait "C:\Program Files\LibreOffice\program\soffice.exe"^
--convert-to ods %%f
)
Il filtro CSV accetta una stringa composta da un minimo di cinque a un massimo di nove token separati da virgola: l'esempio qui sopra è riferito a un file csv in cui i campi sono separati da virgole (carattere ASCII 44), i testi sono delimitati da doppi apici (34), la codifica è Unicode (UTF-8), l'importazione inizia dalla prima riga, l'undicesimo campo è una data in formato AA/MM/GG, la lingua è inglese americano (1033) etc.
Ecco la descrizione dettagliata di tutti i token:
- Il primo token definisce uno o più separatori di campo. Valori multipli sono separati da una barra ("/") quindi se, ad esempio, i separatori sono punti e virgole e tabulazioni orizzontali il primo token sarà 59/9. Se separatori consecutivi devono essere trattati come un separatore unico il token dovrà terminare con /MRG. Se i campi sono a larghezza fissa il token conterrà le tre lettere FIX.
- Il secondo token contiene il delimitatore di testo come valore ASCII, quindi 34 per i doppi apici e 39 per gli apici singoli.
- Il terzo token contiene la codifica del testo, secondo quanto descritto alla pagina Filter Options - Apache OpenOffice Wiki.
- Il quarto token indica la riga da cui iniziare l'importazione. La prima riga del file è la numero 1.
- Il quinto token contiene il formato delle celle, e ha un significato diverso a seconda del primo token:
- Se sono utilizzati i separatori di campo, il token ha la forma colonna/formato[/colonna/formato/...] in cui la colonna 1 è quella più a sinistra e il formato è spiegato qui sotto.
- Se il primo token è FIX il quinto token ha la forma inizio/formato[/inizio/formato/...] in cui inizio è il numero del primo carattere per il campo, essendo 0 il numero del carattere più a sinistra nella linea. Il formato è spiegato qui sotto.
Il formato da utilizzare per la cella durante l'importazione è specificato con un numero:
- Standard
- Testo
- MM/GG/AA
- GG/MM/AA
- AA/MM/GG
- -
- -
- -
- ignora il campo (non importare)
- US-English
Il codice 10 indica che il contenuto del campo è US-English. Ciò risulta utile se un campo contiene valori decimali formattati con il sistema americano (con il punto "." come separatore dei decimali e la virgola "," come separatore delle migliaia). Utilizzando 10 come codice di formato le API sono in grado di interpretare correttamente il contenuto numerico di un campo anche se i separatori di decimali e migliaia nel linguaggio nella lingua corrente sono diversi.
- Il sesto token (facoltativo) equivale al selettore "Lingua" nell'interfaccia utente per l'importazione csv. È una stringa in formato decimale, se è 0 oppure è omessa viene utilizzata la lingua dell'interfaccia utente. Per gli identificatori della lingua si faccia riferimento alla pagina Language Identifier Constants and Strings - Windows applications | Microsoft Docs ricordando che va utilizzato il formato decimale mentre la documentazione Microsoft usa quello esadecimale. Per esempio, per l'inglese americano il codice è 1033 (esadecimale 0x0409).
- Il settimo token (facoltativo)
- se importazione equivale alla spunta "Quoted field as text". Può essere la stringa false o true (default false).
- se esportazione equivale alla spunta "Quote all text cells". Può essere la stringa o true (default false).
- L'ottavo token (facoltativo)
- se importazione equivale alla spunta "Detect special numbers". Può essere la stringa false o true (default false).
- se esportazione non ha equivalente nell'interfaccia utente. Se è la stringa true le celle contenenti valori numerici sono salvate come numeri. Se è false i numeri sono salvati come testo, con delimitatori di testo. Il valore di default è true.
- Il nono token (facoltativo)
- se importazione vengono utilizzati solo otto token, questo non è usato.
- se esportazione equivale alla spunta "Save cell contents as shown". Può essere la stringa o true (default true).