ho creato questa classe:
la creazione del file .xls funziona senza problemi di alcun tipo, mentre il file .xlsx mi genera questo errore: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 riga di 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) atchi è 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...codice:Workbook workbook = new XSSFWorkbook();

Rispondi quotando