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...