ho creato questa classe:
codice:
package core;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Set;
import javax.swing.JFileChooser;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//http://www.appuntisoftware.it/tutorial-apache-poi-creiamo-un-file-excel/
public class PoiWriteExcelFile {

    public static void creaFileXls(HashMap<String, Protocollo> listaProtocolli) {
        creaFileXls(listaProtocolli, "Nome Foglio");
    }

    public static void creaFileXls(HashMap<String, Protocollo> listaProtocolli, String nomeFoglio) {
        try {
            
            String file = "poi-test.xls";
            JFileChooser scegliFile = new JFileChooser();
            int returnVal = scegliFile.showSaveDialog(null);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                file = scegliFile.getSelectedFile().getAbsolutePath();
            }
            FileOutputStream fileOut = new FileOutputStream(file + ".xls");
            Workbook workbook = new HSSFWorkbook();
            HSSFSheet worksheet = (HSSFSheet) workbook.createSheet(nomeFoglio);
            Set<String> chiavi = listaProtocolli.keySet();
            HSSFRow row0 = worksheet.createRow(0);
            HSSFCell cellA00 = row0.createCell(0);
            HSSFCell cellA01 = row0.createCell(1);
            HSSFCell cellA02 = row0.createCell(2);
            HSSFCell cellA03 = row0.createCell(3);
            HSSFCell cellA04 = row0.createCell(4);
            HSSFCell cellA05 = row0.createCell(5);
            HSSFCell cellA06 = row0.createCell(6);
            HSSFCell cellA07 = row0.createCell(7);
            HSSFCell cellA08 = row0.createCell(8);
            cellA00.setCellValue("ID PROTOCOLLO");
            cellA01.setCellValue("Data Protocollo");
            cellA02.setCellValue("Mittente");
            cellA03.setCellValue("OGGETTO");
            cellA04.setCellValue("Mezzo di trasmissione");
            cellA05.setCellValue("OGGETTO");
            cellA06.setCellValue("Destinatario");
            cellA07.setCellValue("Mezzo di trasmissione");
            cellA08.setCellValue("File Associato");
            int numeroRighe = 1;
            for (String key : chiavi) {
                Protocollo protocollo = listaProtocolli.get(key);
                if (protocollo.getDirezione().equalsIgnoreCase("entrata")) {
                    HSSFRow row1 = worksheet.createRow(numeroRighe);
                    HSSFCell cellA0 = row1.createCell(0);
                    HSSFCell cellA1 = row1.createCell(1);
                    HSSFCell cellA2 = row1.createCell(2);
                    HSSFCell cellA3 = row1.createCell(3);
                    HSSFCell cellA4 = row1.createCell(4);
                    HSSFCell cellA5 = row1.createCell(5);
                    HSSFCell cellA6 = row1.createCell(6);
                    HSSFCell cellA7 = row1.createCell(7);
                    HSSFCell cellA8 = row1.createCell(8);
                    cellA0.setCellValue(protocollo.getId());
                    cellA1.setCellValue(protocollo.getData());
                    cellA2.setCellValue(protocollo.getMittente());
                    cellA3.setCellValue(protocollo.getOggetto());
                    cellA4.setCellValue(protocollo.getMezzo());
                    cellA5.setCellValue("");
                    cellA6.setCellValue("");
                    cellA7.setCellValue("");
                    cellA8.setCellValue(protocollo.getFile());
                    
                } else {
                    HSSFRow row1 = worksheet.createRow(numeroRighe);
                    HSSFCell cellA0 = row1.createCell(0);
                    HSSFCell cellA1 = row1.createCell(1);
                    HSSFCell cellA2 = row1.createCell(2);
                    HSSFCell cellA3 = row1.createCell(3);
                    HSSFCell cellA4 = row1.createCell(4);
                    HSSFCell cellA5 = row1.createCell(5);
                    HSSFCell cellA6 = row1.createCell(6);
                    HSSFCell cellA7 = row1.createCell(7);
                    HSSFCell cellA8 = row1.createCell(8);
                    cellA0.setCellValue(protocollo.getId());
                    cellA1.setCellValue(protocollo.getData());
                    cellA2.setCellValue("");
                    cellA3.setCellValue("");
                    cellA4.setCellValue("");
                    cellA5.setCellValue(protocollo.getOggetto());
                    cellA6.setCellValue(protocollo.getMittente());
                    cellA7.setCellValue(protocollo.getMezzo());
                    cellA8.setCellValue(protocollo.getFile());
                }
                numeroRighe++;
            }
            worksheet.autoSizeColumn(0);
            worksheet.autoSizeColumn(1);
            worksheet.autoSizeColumn(2);
            worksheet.autoSizeColumn(3);
            worksheet.autoSizeColumn(4);
            worksheet.autoSizeColumn(5);
            worksheet.autoSizeColumn(6);
            worksheet.autoSizeColumn(7);
            worksheet.autoSizeColumn(8);
            workbook.write(fileOut);
            fileOut.flush();
            fileOut.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
    public static void creaFileXlsx(HashMap<String, Protocollo> listaProtocolli) {
        creaFileXlsx(listaProtocolli, "Nome Foglio");
    }
    
    public static void creaFileXlsx(HashMap<String, Protocollo> listaProtocolli, String nomeFoglio) {
        try {
            
            String file = "poi-test.xlsx";
            JFileChooser scegliFile = new JFileChooser();
            int returnVal = scegliFile.showSaveDialog(null);
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                file = scegliFile.getSelectedFile().getAbsolutePath();
            }
            FileOutputStream fileOut = new FileOutputStream(file + ".xlsx");
            Workbook workbook = new XSSFWorkbook();
            XSSFSheet worksheet =  (XSSFSheet) workbook.createSheet(nomeFoglio);
            Set<String> chiavi = listaProtocolli.keySet();
            XSSFRow row0 = worksheet.createRow(0);
            XSSFCell cellA00 = row0.createCell(0);
            XSSFCell cellA01 = row0.createCell(1);
            XSSFCell cellA02 = row0.createCell(2);
            XSSFCell cellA03 = row0.createCell(3);
            XSSFCell cellA04 = row0.createCell(4);
            XSSFCell cellA05 = row0.createCell(5);
            XSSFCell cellA06 = row0.createCell(6);
            XSSFCell cellA07 = row0.createCell(7);
            XSSFCell cellA08 = row0.createCell(8);
            cellA00.setCellValue("ID PROTOCOLLO");
            cellA01.setCellValue("Data Protocollo");
            cellA02.setCellValue("Mittente");
            cellA03.setCellValue("OGGETTO");
            cellA04.setCellValue("Mezzo di trasmissione");
            cellA05.setCellValue("OGGETTO");
            cellA06.setCellValue("Destinatario");
            cellA07.setCellValue("Mezzo di trasmissione");
            cellA08.setCellValue("File Associato");
            int numeroRighe = 1;
            for (String key : chiavi) {
                Protocollo protocollo = listaProtocolli.get(key);
                if (protocollo.getDirezione().equalsIgnoreCase("entrata")) {
                    XSSFRow row1 = worksheet.createRow(numeroRighe);
                    XSSFCell cellA0 = row1.createCell(0);
                    XSSFCell cellA1 = row1.createCell(1);
                    XSSFCell cellA2 = row1.createCell(2);
                    XSSFCell cellA3 = row1.createCell(3);
                    XSSFCell cellA4 = row1.createCell(4);
                    XSSFCell cellA5 = row1.createCell(5);
                    XSSFCell cellA6 = row1.createCell(6);
                    XSSFCell cellA7 = row1.createCell(7);
                    XSSFCell cellA8 = row1.createCell(8);
                    cellA0.setCellValue(protocollo.getId());
                    cellA1.setCellValue(protocollo.getData());
                    cellA2.setCellValue(protocollo.getMittente());
                    cellA3.setCellValue(protocollo.getOggetto());
                    cellA4.setCellValue(protocollo.getMezzo());
                    cellA5.setCellValue("");
                    cellA6.setCellValue("");
                    cellA7.setCellValue("");
                    cellA8.setCellValue(protocollo.getFile());
                    
                } else {
                    XSSFRow row1 = worksheet.createRow(numeroRighe);
                    XSSFCell cellA0 = row1.createCell(0);
                    XSSFCell cellA1 = row1.createCell(1);
                    XSSFCell cellA2 = row1.createCell(2);
                    XSSFCell cellA3 = row1.createCell(3);
                    XSSFCell cellA4 = row1.createCell(4);
                    XSSFCell cellA5 = row1.createCell(5);
                    XSSFCell cellA6 = row1.createCell(6);
                    XSSFCell cellA7 = row1.createCell(7);
                    XSSFCell cellA8 = row1.createCell(8);
                    cellA0.setCellValue(protocollo.getId());
                    cellA1.setCellValue(protocollo.getData());
                    cellA2.setCellValue("");
                    cellA3.setCellValue("");
                    cellA4.setCellValue("");
                    cellA5.setCellValue(protocollo.getOggetto());
                    cellA6.setCellValue(protocollo.getMittente());
                    cellA7.setCellValue(protocollo.getMezzo());
                    cellA8.setCellValue(protocollo.getFile());
                }
                numeroRighe++;
            }
            worksheet.autoSizeColumn(0);
            worksheet.autoSizeColumn(1);
            worksheet.autoSizeColumn(2);
            worksheet.autoSizeColumn(3);
            worksheet.autoSizeColumn(4);
            worksheet.autoSizeColumn(5);
            worksheet.autoSizeColumn(6);
            worksheet.autoSizeColumn(7);
            worksheet.autoSizeColumn(8);
            workbook.write(fileOut);
            fileOut.flush();
            fileOut.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
la creazione del file .xls funziona senza problemi di alcun tipo, mentre il file .xlsx mi genera questo errore:
codice:
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
	at core.PoiWriteExcelFile.creaFileXlsx(PoiWriteExcelFile.java:137)
	at core.PoiWriteExcelFile.creaFileXlsx(PoiWriteExcelFile.java:124)
	at view.protocollo.PannelloGestioneProtocollo.jButton4ActionPerformed(PannelloGestioneProtocollo.java:184)
	at view.protocollo.PannelloGestioneProtocollo.access$300(PannelloGestioneProtocollo.java:38)
	at view.protocollo.PannelloGestioneProtocollo$4.actionPerformed(PannelloGestioneProtocollo.java:105)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at
la riga di errore è:
codice:
            Workbook workbook = new XSSFWorkbook();
chi è così gentile da spiegarmi il perchè mi dice che non conosce la classe? ovviamente tutti i jar della libreria poi sono installati nel path del progetto...