Hallo,
bei meinem Programm handelt es sich um ein Tool, dass eine Exceltabelle einliest, darstellt und nach dem Editieren wieder im Exceldokument abspeichert. Das Einlesen und Darstellen funtioniert bereits, doch beim Schreiben in die entsprechende Exceltabelle erhalte ich eine Fehlermeldung.
Die Fehlermeldung ist eine ArrayIndexOutOfBoundsException für eine die version-betreffende neue Methode der Klasse XSSFTable. Die Fehlermeldung wird ausgelöst, in der Codezeile beim Schreiben in die Exceldatei.
Das prinzipielle Schreiben in eine solche Datei habe ich bereits problemlos in der Version 3.15 programmiert.
Da es ein spezielles Paket ist hoffe ich dass mir trotzdem jemand dabei helfen kann. Den kompletten Code findet ihr unten. Die Fehlermeldung tritt in den Cellreferences auf. Vielleicht sieht jemand den Fehler auf Anhieb und kann mir einen Tipp geben. Ich habe auch gelesen, dass es sich um eine Methode handelt, die aus der Betaversion stammt.
Hat jemand vielleicht Erfahrungen mit Apache POI 3.17?
Bin über konstruktive Kommentare wirklich dankbar
bei meinem Programm handelt es sich um ein Tool, dass eine Exceltabelle einliest, darstellt und nach dem Editieren wieder im Exceldokument abspeichert. Das Einlesen und Darstellen funtioniert bereits, doch beim Schreiben in die entsprechende Exceltabelle erhalte ich eine Fehlermeldung.
Die Fehlermeldung ist eine ArrayIndexOutOfBoundsException für eine die version-betreffende neue Methode der Klasse XSSFTable. Die Fehlermeldung wird ausgelöst, in der Codezeile beim Schreiben in die Exceldatei.
Das prinzipielle Schreiben in eine solche Datei habe ich bereits problemlos in der Version 3.15 programmiert.
Da es ein spezielles Paket ist hoffe ich dass mir trotzdem jemand dabei helfen kann. Den kompletten Code findet ihr unten. Die Fehlermeldung tritt in den Cellreferences auf. Vielleicht sieht jemand den Fehler auf Anhieb und kann mir einen Tipp geben. Ich habe auch gelesen, dass es sich um eine Methode handelt, die aus der Betaversion stammt.
Hat jemand vielleicht Erfahrungen mit Apache POI 3.17?
Java:
private JMenuItem getJmiDatSpeichern() {
JMenuItem datSpeichern = new JMenuItem("Datei speichern");
datSpeichern.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
fileAccess();
System.out.println("File: "+actualFile);
System.out.println("Sheet: "+actualSheet.getSheetName());
//Daten abspeichern
Header header=actualSheet.getHeader();
header.setLeft(jtaZeitraum.getText());
header.setCenter(jtaAnschrift.getText());;
header.setRight(jtaVonBis.getText());
for(int i=0; i<datensatzListe.size(); i++){
XSSFRow row=actualSheet.getRow(i+3);
System.out.println("Row: "+row.getRowNum());
XSSFCell cell0=row.getCell(0);
cell0.setCellValue("");
XSSFCell cell1=row.getCell(1);
cell1.setCellValue("");
XSSFCell cell2=row.getCell(2);
cell2.setCellValue("");
XSSFCell cell3=row.getCell(3);
cell3.setCellValue("");
XSSFCell cell4=row.getCell(4);
cell4.setCellValue("");
XSSFCell cell5=row.getCell(5);
cell5.setCellValue("");
XSSFCell cell6=row.getCell(6);
cell6.setCellValue("");
XSSFCell cell7=row.getCell(7);
cell7.setCellValue("");
XSSFCell cell8=row.getCell(8);
cell8.setCellValue("");
XSSFCell cell9=row.getCell(9);
cell9.setCellValue("");
XSSFCell cell10=row.getCell(10);
cell10.setCellValue("");
}
for(int i=0; i<datensatzListe.size(); i++){
XSSFRow row=actualSheet.getRow(i+3);
System.out.println("Row: "+row.getRowNum());
XSSFCell cell0=row.getCell(0);
System.out.println("Cell: "+cell0.getColumnIndex());
cell0.setCellValue(datensatzListe.get(i).getEinnahmen());
XSSFCell cell1=row.getCell(1);
cell1.setCellValue(datensatzListe.get(i).getMwstEin());
XSSFCell cell2=row.getCell(2);
cell2.setCellValue(datensatzListe.get(i).getAusgaben());
XSSFCell cell3=row.getCell(3);
cell3.setCellValue(datensatzListe.get(i).getMwst19Aus());
XSSFCell cell4=row.getCell(4);
cell4.setCellValue(datensatzListe.get(i).getMwst7Aus());
XSSFCell cell5=row.getCell(5);
cell5.setCellValue(datensatzListe.get(i).getRechnr());
XSSFCell cell6=row.getCell(6);
cell6.setCellValue(datensatzListe.get(i).getZaehler());
XSSFCell cell7=row.getCell(7);
cell7.setCellValue(datensatzListe.get(i).getDate());
XSSFCell cell8=row.getCell(8);
cell8.setCellValue(datensatzListe.get(i).getVonFuer());
XSSFCell cell9=row.getCell(9);
cell9.setCellValue(datensatzListe.get(i).getRubrik());
XSSFCell cell10=row.getCell(10);
cell10.setCellValue(datensatzListe.get(i).getKonto());
}
tabelleAktualisieren();
try {
writerEx = new WriterEx(fehlerlogdatei);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
try {
writerFortschritt = new WriterFortschritt(new File(actualDirectory.toString() + "/fortschritt.txt"));
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
FileOutputStream outPutStream = null;
try {
outPutStream = new FileOutputStream(actualFile);
actualWB.write(outPutStream);
} catch (IOException e) {
e.printStackTrace();
try {
writerEx.printIOException(e);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (NullPointerException e1) {
e1.printStackTrace();
try {
writerEx.printNullPointerException(e1);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (Exception e1) {
e1.printStackTrace();
try {
writerEx.printException(e1);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} finally {
if (outPutStream != null) {
try {
outPutStream.flush();
outPutStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (NullPointerException e1) {
e1.printStackTrace();
// TODO Automatisch generierter Erfassungsblock
try {
writerEx.printNullPointerException(e1);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (Exception e3) {
e3.printStackTrace();
try {
writerEx.printException(e3);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} finally {
}
}
});
return datSpeichern;
}
Java:
public void fileAccess(){
try{
FileInputStream fis = new FileInputStream(actualFile);
// Finds the workbook instance for XLSX file
actualWB = new XSSFWorkbook(fis);
// Return first sheet from the XLSX workbook
int sheetNumber=0;
String[] sheetNames = new String[actualWB.getNumberOfSheets()];
for (int i=0; i<actualWB.getNumberOfSheets(); i++) {
sheetNames[i]=actualWB.getSheetAt(i).getSheetName();
}
AuswahlDialog aDialog= new AuswahlDialog(new JFrame(), new String("Sheetauswahl"), sheetNames,true);
aDialog.setVisible(true);
String sheetName=aDialog.getSheetName();
if(sheetName==null){
JOptionPane.showMessageDialog(this, "kein Sheet ausgewählt");
}else{
for(int i=0; i<sheetNames.length; i++){
if(sheetNames[i]==sheetName){
sheetNumber=i;
}
}
}
actualSheet=actualWB.getSheetAt(sheetNumber);
jtfDatei.setText(actualFile.getName());
jtfVerzeichnis.setText(actualDirectory.getAbsolutePath());
jtfTabelle.setText(actualSheet.getSheetName());
} catch (ClassCastException e) {
e.printStackTrace();
try {
writerEx.printClassCastException(e);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (NumberFormatException e) {
e.printStackTrace();
try {
writerEx.printNumberFormatException(e);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (NullPointerException e) {
e.printStackTrace();
try {
writerEx.printNullPointerException(e);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
try {
writerEx.printIOException(e);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
try {
writerEx.printException(e);
} catch (IOException e2) {
// TODO Automatisch generierter Erfassungsblock
e2.printStackTrace();
}
}
}
Bin über konstruktive Kommentare wirklich dankbar