LibreOffice: quando la stampa unione non rispetta i CAP "romani"

Certe cose si imparano solo facendole. Scoscesa e irta di ostacoli appare la via di chi decide di passare dalla famosissima suite di applicazioni Microsoft per l'ufficio, alla più economica ma altrettanto valida alternativa offerta da LibreOffice, peccato che certe volte quest'ultima si perda in quelli che potremmo tranquillamente definire proverbiali bicchieri d'acqua. Uno di questi, è la formattazione degli elementi nella "stampa in serie", alternativa free alla "stampa unione" di redmondiana memoria.

Mi sono imbattuto in uno di questi glitch con la solita stampa in serie delle etichette con cui l'Associazione Culturale Airons di Vigevano può spedire le copie di Zzap! ai suoi tesserati. Facciamo due passi indietro e ricordiamo come funziona la stampa in serie:

C'è un documento chiamato sorgente dati, che può essere un foglio di calcolo o un database, da cui è possibile estrarre dei dati purché siano perfettamente ordinati in una matrice fatta di righe e colonne, e un altro (il nostro template) che dice a LibreOffice Writer quali campi prendere e come organizzarli sul foglio. Infine, c'è un documento di unione, che possiamo definire 'output', generato dall'unione del template e dei dati estratti dalla sorgente. 

Ora, quando viene esportato il database dei 'clienti' con indirizzi, CAP, numeri di telefono ecc in un file CSV, il formato prescelto automaticamente da Calc (come da Excel) per il CAP è un semplice numero, invece di un testo. E voi direte "beh, che c'è di male? in fondo è un numero". E avreste ragione, se tutti i CAP cominciassero con una cifra diversa dallo 0, cosa che invece capita a tutti i codici di avviamento postale dei territori attorno alla capitale. Succede quindi che un CAP come 27029 appaia correttamente esportato come '27029', mentre uno come 00016 sia incolonnato come '16'.

Immaginate adesso di stampare una decina di fogli da 40 etichette ciascuna, applicarli ad altrettante buste e poi portarle a un centro di accettazione delle Poste. L'apparecchio meccanizzato che legge gli indirizzi si aspetta di trovare dei CAP da 5 cifre e invece ne trova soltanto due o tre. Cosa succede in questi casi? In realtà non lo so, ma temo che possa in qualche modo compromettere la regolare consegna della Posta e così, per evitare problemi, su MS Excel è sufficiente selezionare la colonna dei CAP, formattare la cella come numero con formato 00000 et voilà, tutti i CAP appaiono magicamente incolonnati con tutti gli zeri al loro posto, romani inclusi. Importi i dati nella stampa unione e anche le etichette sono corrette.

LibreOffice, invece, per qualche astrusa ragione non lo fa: prendi il foglio Calc con tutti i dati, incolonni i CAP con il formato personalizzato 00000, e quando importi i dati nel template per la stampa in serie... e zac, tutti gli 00016 tornano per magia a essere dei semplici 16. E sul ramo 7.3 della suite non avevo trovato nessuna soluzione al problema.

Probabilmente, qualcuno deve essersene accorto e con la versione 7.4 una soluzione c'è. Mettiamo che il template abbia sempre la forma che avevamo visto l'altra volta, quando vi avevo spiegato come evitare che un campo venisse magicamente saltato tra una pagina e l'altra di un documento unito:

La soluzione stavolta sta nell'intervenire direttamente sul template facendo clic sull'icona "sorgenti dati", cioè questa:


...e poi selezionando il formato che ci interessa DIRETTAMENTE nel campo che apparirà subito dopo. Come vedete, qui c'è subito un CAP sbagliato:


Ma se noi clicchiamo col tasto destro del mouse sull'intestazione di colonna "BILLING_POSTCODE", possiamo agire direttamente sulla formattazione di tutto questo campo:


La sequenza corretta è: 1) clic destro e poi "formattazione colonna"; 2) inserire cinque zeri qui; [OPZIONALI: 3) clic sul pulsante con il baloon; 4) dare il come CAP al formato personalizzato]; 5) fare clic sul pulsante di spunta verde, o sarà stata tutta fatica inutile; 6) clic su OK per proseguire. A quel punto, i dati dei CAP saranno perfettamente incolonnati con tutti i loro zeri. Esattamente ciò che volevo ottenere:



Il restante problema? Questa menata va ripetuta OGNI VOLTA. Salvare il template non basta. Sicuramente mi sto perdendo qualche pezzo della logica con cui LibreOffice funziona e non mi vergogno a svelare un po' della mia ignoranza, ma sono del parere che 1) Writer dovrebbe comunque rispettare la formattazione dei dati provenienti dal foglio Calc e 2) queste modifiche andrebbero mantenute dopo la chiusura del documento. E non perché "MS Office fa così e quindi è giusto così", bensì perché sarebbe molto più comodo e farebbe perdere meno tempo all'utente.