Come formattare un documento ods in Java

di il
7 risposte

Come formattare un documento ods in Java

Buongiorno,

Uso Java 17 su Debian 12.8 e ambiente di sviluppo Apache NetBeans IDE 23.
Riesco a creare un documento .ods tramite la classe
org.jopendocument.dom.spreadsheet.SpreadSheet
ma non riesco a formattare il contenuto delle colonne, righe e celle perché devo popolarlo con un DefaultTableModel.

Mi hanno suggerito di usare le LibreOffice UNO API
Questo esempio:
https://api.libreoffice.org/examples/DevelopersGuide/Spreadsheet/SpreadsheetSample.java
infatti sembra risolvere le mie esigenze.

Dal sito https://api.libreoffice.org/ ho scaricato il pacchetto
LibreOffice_24.8.3_Linux_x86-64_deb.tar.gz
l'ho installato e Office funziona.

Poi ho scaricato il pacchetto LibreOffice_24.8.4_Linux_x86-64_rpm_sdk.tar.gz
l'ho spacchettato e mi ha creato una cartella:
/LibreOffice_24.8.4.2_Linux_x86-64_rpm_sdk/RPMS/opt/libreoffice24.8/sdk/ con varie sottocartelle e file.
e nella RPMS c'è anche il pacchetto libobasis24.8-sdk-24.8.4.2-2.x86_64.rpm

Adesso non capisco cosa devo fare.

Nella documentazione online, a questa pagina:
https://api.libreoffice.org/docs/install.html
cita una cartella "/opt/libreoffice/sdk"
Io nella /opt/libreoffice24.8/ non trovo alcuna cartella sdk.
Devo copiare la cartella /sdk del pacchetto rpm_sdk, nella cartella in cui ho installato LibreOffice 24.8 ovvero la /opt/libreoffice24.8/ ?

Inoltre dice:
"The SDK provides a mechanism which configures the SDK build environment to your personal needs the first time you use the SDK environment. This configuration step creates a new setsdkenv_XXX script in the user's home directory:
$HOME/$OO_SDK_NAME/setsdkenv_unix.sh -> for Unix-like systems"

Ma non ho capito come si deve fare per usare il SDK, visto che NetBeans non lo riconosce.

Che file devo eseguire per creare la configurazione dell'SDK in modo che mi venga visto da NetBeans? :redface:

7 Risposte

  • Re: Come formattare un documento ods in Java

    22/12/2024 - ZioCrick ha scritto:

    Uso Java 17 su Debian 12.8  ...


    /LibreOffice_24.8.4.2_Linux_x86-64_rpm_sdk/RPMS/opt/libreoffice24.8/sdk/ con varie sottocartelle e file.
    e nella RPMS c'è anche il pacchetto libobasis24.8-sdk-24.8.4.2-2.x86_64.rpm

    Non credo che tu possa utilizzare direttamente dei pacchetti in formato .rpm su una distribuzione che utilizza il formato .deb ... almeno io non saprei come fare.

    Io avevo utilizzato per passare da .deb a .rpm (l'inverso di quello che serve a te) un convertitore (se non ricordo male si chiama(va) alien) ma credo non sia più supportato.

  • Re: Come formattare un documento ods in Java

    Devi scaricare il formato deb: nella pagina Download Libreoffice c'è un dropdown per selezionare il sistema operativo: seleziona il formato .deb e scarica l'SDK corrispondente.

    Altrimenti scorri la pagina e in basso ci sono i vari tipi di sistema operativo supportato. Clicca su .deb e il link per il download dell'SDK diventerà in formato .deb.

  • Re: Come formattare un documento ods in Java

    Amici Max e Andrea grazie per il vostro interessamento, 
    ma purtroppo  su un sito americano ho scoperto che LibreOffice UNO API non è utilizzabile su Debian!

    Qundi devo cercare altre soluzioni.

    Se avete indicazioni in merito vi ringrazio!

  • Re: Come formattare un documento ods in Java

    Ci dai il link al sito americano? Così vedo qual è il problema.

  • Re: Come formattare un documento ods in Java

    Questo è quello che mi ha detto ChatGPT:

    Certo! Ecco un esempio di come utilizzare le API UNO di LibreOffice con Java su Debian Linux. L'esempio mostrerà come avviare LibreOffice in modalità "headless" (senza interfaccia grafica) e come ottenere la versione di LibreOffice.

    Passaggi preliminari

    1. Installazione di LibreOffice e pacchetti di sviluppo:

      Prima di tutto, devi avere LibreOffice installato insieme ai pacchetti di sviluppo per Java. Esegui i seguenti comandi:

      sudo apt update
      sudo apt install libreoffice libreoffice-java-common
      
    2. Verifica di Java:

      Assicurati che Java sia installato sul tuo sistema. Puoi verificarlo con il comando:

      java -version
      

      Se non è installato, puoi installare OpenJDK:

      sudo apt install openjdk-11-jdk
      
    3. Impostare le variabili di ambiente:

      Per utilizzare le librerie di LibreOffice con Java, dovrai includere i file .jar di LibreOffice nel classpath. Puoi trovarli generalmente nella directory di installazione di LibreOffice, come ad esempio:

      /usr/lib/libreoffice/program/classes/
      

      Aggiungi questa directory al tuo classpath quando compili ed esegui il programma Java. Puoi farlo usando il comando -cp o impostando la variabile di ambiente CLASSPATH.

    Esempio di codice in Java

    In questo esempio, avvieremo LibreOffice in modalità "headless" e otterremo la versione di LibreOffice utilizzando le API UNO. Il codice Java si collega a un'istanza di LibreOffice in esecuzione (o avvia una nuova sessione se necessario).

    Codice Java:

    import com.sun.star.uno.*;
    import com.sun.star.frame.*;
    import com.sun.star.lang.*;
    import com.sun.star.beans.*;
    
    public class LibreOfficeVersion {
        public static void main(String[] args) {
            try {
                // Impostare il contesto di collegamento
                XComponentContext context = com.sun.star.comp.helper.Bootstrap.bootstrap();
    
                // Creare un'istanza di Desktop
                XDesktop desktop = (XDesktop) UnoRuntime.queryInterface(XDesktop.class, context.getServiceManager().createInstanceWithContext("com.sun.star.frame.Desktop", context));
    
                // Ottenere la versione di LibreOffice
                String version = desktop.getVersion();
                System.out.println("Versione di LibreOffice: " + version);
    
                // Chiudere l'istanza di LibreOffice (facoltativo)
                desktop.terminate();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    Dettagli del codice:

    • com.sun.star.comp.helper.Bootstrap.bootstrap(): Questo metodo avvia una connessione a LibreOffice in modalità di "headless", ovvero senza l'interfaccia grafica.
    • context.getServiceManager().createInstanceWithContext("com.sun.star.frame.Desktop", context): Crea un'istanza del servizio Desktop, che è l'interfaccia principale per interagire con LibreOffice.
    • desktop.getVersion(): Ottiene la versione di LibreOffice.
    • desktop.terminate(): Termina la sessione di LibreOffice (questa operazione è opzionale e dipende dal tuo caso d'uso).

    Compilazione ed esecuzione

    1. Compilazione del codice:

      Prima di compilare, devi assicurarti di includere i .jar necessari nel classpath. Puoi fare ciò manualmente o usando un comando come il seguente. Assumendo che il tuo codice sia salvato in un file chiamato LibreOfficeVersion.java e che i .jar di LibreOffice siano in /usr/lib/libreoffice/program/classes/, puoi compilare il codice come segue:

      javac -cp .:/usr/lib/libreoffice/program/classes/* LibreOfficeVersion.java
      
    2. Esecuzione del programma:

      Una volta compilato, puoi eseguire il programma con:

      java -cp .:/usr/lib/libreoffice/program/classes/* LibreOfficeVersion
      

      Questo dovrebbe stampare la versione di LibreOffice sulla console.

    Configurazione delle variabili di ambiente

    Se non vuoi specificare il classpath ogni volta, puoi impostare la variabile di ambiente CLASSPATH. Aggiungi la seguente riga nel tuo file ~/.bashrc (o ~/.zshrc se usi Zsh):

    export CLASSPATH=$CLASSPATH:/usr/lib/libreoffice/program/classes/*
    

    Quindi ricarica il file di configurazione:

    source ~/.bashrc
    

    Conclusione

    In questo esempio, abbiamo visto come configurare un programma Java per utilizzare le API UNO di LibreOffice su Debian Linux. Utilizzando questo codice, puoi interagire con LibreOffice in modalità "headless" per eseguire operazioni sui documenti, come la lettura della versione di LibreOffice, ma puoi anche estendere il codice per lavorare con documenti, fogli di calcolo e altro ancora.

  • Re: Come formattare un documento ods in Java

    25/12/2024 - Andrea Quaglia ha scritto:

    Ci dai il link al sito americano? Così vedo qual è il problema.

    Scusa Andrea, sono andato a riguardarmi tutte le informazioni raccolte e mi sa che devo aver fatto qualche casino io, perché nel sito di cui parlavo mi hanno detto, come diceva max, che il formato rpm non è utilizzabile su Debian.

    Purtroppo accedendo alla pagina https://www.libreoffice.org/download/download-libreoffice/  da Debian non ero riuscito ad impostare il formato deb
    Mi lasciava impostare solo il formato rpm.

    Tra l'altro lo so che su Debian si installano i pacchetti deb ma siccome mi è capitato di installare anche pacchetti di altro tipo, e non sono esperto in tal senso, ho pensato che anche il formato rpm potesse andare bene.

    Io non uso ChatGPT per principio, ma un esempio molto ben fatto di uso delle UNO API ce l'avevo già.

    Adesso che sono per qualche giorno fuori casa, sto usando un portatile con Windows preinstallato e andando alla pagina suddetta ho potuto impostare il formato deb e ho scaricato il pacchetto. Boh?

    A questo punto, quando tra qualche giorno tornerò a casa proverò ad installarlo sul pc desktop con Debian e vedrò se riesco a farlo vedere a NetBeans. Poi vi aggiorno. ;-)

  • Re: Come formattare un documento ods in Java

    Aggiornamento.
    Come dicevo ho scaricato il pacchetto LibreOffice_24.8.4_Linux_x86-64_deb_sdk.tar.gz
    l'ho spacchettato e mi ha creato la cartella:
    \LibreOffice_24.8.4.2_Linux_x86-64_deb_sdk\DEBS\
    con dentro il pacchetto libobasis24.8-sdk_24.8.4.2-2_amd64.deb
    da terminale sono andato nella \LibreOffice_24.8.4.2_Linux_x86-64_deb_sdk\DEBS\
    e ho dato il comando:

    
    sudo apt install ./libobasis24.8-sdk_24.8.4.2-2_amd64.deb
    

    e in risposta ho avuto:
    Reading package lists... Done
    Building dependency tree... Done
    Reading state information... Done
    Note, selecting 'libobasis24.8-sdk' instead of './libobasis24.8-sdk_24.8.4.2-2_amd64.deb'
    Some packages could not be installed. This may mean that you have
    requested an impossible situation or if you are using the unstable
    distribution that some required packages have not yet been created
    or been moved out of Incoming.
    The following information may help to resolve the situation:

    The following packages have unmet dependencies:
    libobasis24.8-sdk : Depends: libobasis24.8-core (>= 24.8.4.2) but 24.8.3.2-2 is to be installed
    E: Unable to correct problems, you have held broken packages.


    e adesso non so cosa fare.

    Qualche indicazione?

Devi accedere o registrarti per scrivere nel forum
7 risposte