Eccellere in Excel con Java

Che tu abbia bilanci, download di informazioni sull'account, calcoli delle tasse o buste paga, tutti tendono a venire in Microsoft Excel. I professionisti non IT si sentono a proprio agio nell'usare Microsoft Excel come tecnologia di scambio dati. L'API Jakarta POI (Poor Obfuscation Implementation) è un modo fantastico per i programmatori Java di accedere ai formati di documenti Microsoft. L'API più matura di Jakarta POI è l'API HSSF (Horrible Spreadsheet Format), che accede ai documenti di Microsoft Excel.

In questo articolo, ti guiderò attraverso i passaggi per creare e leggere documenti Excel e per utilizzare i caratteri e lo stile delle celle, tutti utilizzando Java.

Nota: è possibile scaricare il codice sorgente per tutti gli esempi in questo articolo da Risorse.

Terminologia dei POI

I termini chiave associati a Jakarta POI sono i seguenti:

  • POIFS (Poor Obfuscation Implementation File System): API Java per leggere e scrivere OLE (Object Linking and Embedding) 2 formati di documenti composti
  • HSSF (Horrible Spreadsheet Format): API Java per leggere Microsoft Excel
  • HDF (Horrible Document Format): API Java per leggere e scrivere Microsoft Word 97
  • HPSF (Horrible Property Set Format): API Java per la lettura di set di proprietà utilizzando (solo) Java

Crea un documento Excel

L'API POI di Jakarta può essere utilizzata per creare un documento Excel a livello di programmazione. I passaggi importanti coinvolti sono:

  • Crea una cartella di lavoro: HSSFWorkbook workbook = new HSSFWorkbook();
  • Crea un nuovo foglio di lavoro nella cartella di lavoro e denomina il foglio di lavoro "Java Excels": HSSFSheet sheet = workbook.createSheet("Java Excels");
  • Crea una nuova riga nel foglio: HSSFRow row = sheet.createRow((short)0);
  • Crea una cella nella riga: HSSFCell cell = row.createCell((short) 0);
  • Metti del contenuto nella cella: cell.setCellValue("Have a Cup of XL");
  • Scrivi la cartella di lavoro nel filesystem: workbook.write(fileOutputStream);

Leggi i dati dal documento Excel

In questo esempio, vedrai come leggere i valori da un documento Excel.

Supponiamo che questo sia il nostro foglio Excel:

Nome dipendente Specializzazione Designazione
Anbu Programmazione Programmatore senior
Jason Settore bancario Analista di affari
Ramesh Banche dati DBA
MackyB Contabilità Testa di consegna

I passaggi chiave nella lettura del foglio Excel sono i seguenti:

  • Creare un nuovo documento di Excel di riferimento: HSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));.
  • Fare riferimento al foglio: per impostazione predefinita, il primo foglio nel documento di Excel è al di riferimento 0: HSSFSheet sheet = workbook.getSheetAt(0);. Un foglio può anche essere indicato per nome. Supponiamo che il foglio Excel abbia il nome predefinito "Foglio1". Esso può essere definito come segue: HSSFSheet sheet = workbook.getSheet("Sheet1");.
  • Fare riferimento a una riga: HSSFRow row = sheet.getRow(0);.
  • Fare riferimento a una cella della riga: HSSFCell cell = row.getCell((short)0);.
  • Ottenere i valori in quella cella: cell.getStringCellValue();.

Un esempio pratico

Supponiamo ora di voler vedere l'elenco di tutti i metodi dichiarati e le variabili membro in un file jar. L'ideale sarebbe avere un elenco consolidato di tutte le informazioni in un unico file. Vorremmo visualizzare le informazioni in modo che i nomi delle classi siano nella prima colonna, i campi dichiarati nella seconda colonna e i metodi dichiarati nella terza colonna, con le intestazioni delle colonne che appaiono in rosso.

Il programma dovrà completare le seguenti attività:

  • Decomprimere il file jar
  • Leggi tutti i file di classe nel file jar
  • Carica le classi nel file jar
  • Usando la riflessione, ottieni i metodi e i campi dichiarati
  • Scrivi le informazioni sulla classe in un foglio Excel utilizzando Jakarta POI

Concentriamoci solo sugli interessanti passaggi dell'utilizzo dei POI di Jakarta:

  • Crea un nuovo documento Excel: workbook = new HSSFWorkbook();
  • Crea un foglio di lavoro in quel documento e dai un nome al foglio di lavoro: sheet = workbook.createSheet("Java Class Info");
  • Imposta la larghezza delle prime tre colonne: sheet.setColumnWidth((short)0,(short)10000 );
  • Crea la riga di intestazione: HSSFRow row = sheet.createRow((short)0);
  • Crea e imposta il carattere e lo stile della cella:
    Carattere HSSFFont = workbook.createFont (); font.setColor (HSSFFont.COLOR_RED); font.setBoldweight (HSSFFont.BOLDWEIGHT_BOLD); // Crea lo stile HSSFCellStyle cellStyle = workbook.createCellStyle (); cellStyle.setFont (font);
  • Usa lo stile della cella:
    HSSFCell cell = row.createCell ((short) 0); cell.setCellStyle (cellStyle); cell.setCellType (HSSFCell.CELL_TYPE_STRING); cell.setCellValue ("Nome classe");
  • Scrivi il file di output:
    FileOutputStream fOut = nuovo FileOutputStream (outputFile); // Scrivi il foglio Excel workbook.write (fOut); fOut.flush (); // Affare fatto. Chiudilo. fOut.close ();

Sommario

Come dimostrato in questo articolo, gli sviluppatori Java non hanno più bisogno di sussultare ai dati nei fogli Excel. Possiamo accedere a livello di programmazione ai documenti Excel. Prendi una tazza di Java ed eccellere in Excel!

Elango Sundaram è un programmatore Java esperto con interessi di ricerca in architettura di calcolo distribuito, tecnologia basata su agenti e metodologia orientata agli oggetti. Ha conseguito un master in informatica presso la Virginia Tech University e ha scritto Calcolo distribuito utilizzando Jini e Websphere Studio Application Developer Tail Plug-in (per WSAD 4.0).

Ulteriori informazioni su questo argomento

  • Scarica il codice sorgente che accompagna questo articolo

    //images.techhive.com/downloads/idge/imported/article/jvw/2004/03/jw-0322-poi.zip

  • Il sito web dei POI di Jakarta

    //jakarta.apache.org/poi/

  • Per ulteriori informazioni sui POI, leggi "It's POI-fect", Tony Sintes ( JavaWorld, maggio 2002)

    //www.javaworld.com/javaworld/javaqa/2002-05/01-qa-0503-excel3.html

  • Per ulteriori strumenti Java, sfogliare la Strumenti di sviluppo sezione del JavaWorld' s indice d'attualità

    //www.javaworld.com/channel_content/jw-tools-index.shtml

  • Per altri articoli sugli strumenti open source, vedere la colonna Profilo open source di Erik Swenson

    //www.javaworld.com/columns/jw-opensource-index.shtml

Questa storia, "Eccellere in Excel con Java" è stata originariamente pubblicata da JavaWorld.