J
JJayJJay
Gast
Hallo. Ich hoffe, jemand kann mir wieterhelfen.
Ich bin noch ein Anfänger in Java. Jetzt mache ich für die Arbeit ein Programm, welches eine Excel-Datei öffnet und darin arbeitet. Dazu verwende ich Apache POI.
Nachdem es mir nun endlich gelungen ist, jenes einzubauen, habe ich Probleme mit den Fehlermeldungen.
Das ist die Fehlermeldung:
und hier ist der entsprechende Code-Teil:
Die Fehlermeldung "Pfad nicht gefunden." trifft glaube ich nicht zu, da es nur das ist, was ich bei Fehlschlag ausgeben lasse. Der Pfad stimmt auch auf jeden Fall, da ich mit dem Einlesen-Button die Datei öffnen kann. Sie jetzt mit dem POI auszuwählen ist das Problem. Da steht auch ständig Source nicht gefunden und wenn ich auf diese "Native Method" klicke, möchte er nen Pfad für die Source. Ich hab ihm den dann gegeben, wo die Sachen bei mir liegen, löst das Problem anscheinend aber nicht. :/
Eingebunden als Librarie sind sie eigentlich auch, also hat er den Pfad doch eigentlich??
Hat jemand die zündende Idee?
Ich bin noch ein Anfänger in Java. Jetzt mache ich für die Arbeit ein Programm, welches eine Excel-Datei öffnet und darin arbeitet. Dazu verwende ich Apache POI.
Nachdem es mir nun endlich gelungen ist, jenes einzubauen, habe ich Probleme mit den Fehlermeldungen.
Das ist die Fehlermeldung:
Java:
fname C:\test\TestdateiNotizen.xls
java.io.FileNotFoundException:
Pfad nicht gefunden.
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at HauptfensterEditor.pb_verarbeiten_for_MouseClicked(HauptfensterEditor.java:299)
at HauptfensterEditor$MyMouseAdapter.mouseClicked(HauptfensterEditor.java:223)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at org.apache.poi.util.IOUtils.readFully(IOUtils.java:52)
at org.apache.poi.util.IOUtils.readFully(IOUtils.java:37)
at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:73)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:84)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:257)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:238)
at HauptfensterEditor.pb_verarbeiten_for_MouseClicked(HauptfensterEditor.java:306)
at HauptfensterEditor$MyMouseAdapter.mouseClicked(HauptfensterEditor.java:223)
at java.awt.Component.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
und hier ist der entsprechende Code-Teil:
Java:
// java.awt.event
class MyMouseAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent event) {
Object object = (Object) event.getSource();
if (object == btEinlesen) {
pb_einlesen_for_MouseClicked();
} else if (object == btVerarbeiten) {
pb_verarbeiten_for_MouseClicked();
} else if (object == btNachbearbeiten) {
pb_nachbearbeiten_for_MouseClicked();
} else if (object == btDetails) {
pb_details_for_MouseClicked();
} else if (object == btAktualisieren) {
pb_aktualisieren_for_MouseClicked();
} else if (object == btSchliessen) {
pb_schliessen_for_MouseClicked();
} else
System.out.println("Fehler.");
}
}
// methods
// Auswählen der Datei und Einlesen in Excel
void pb_einlesen_for_MouseClicked() {
btEinlesen.addActionListener(this);
setTitle("Einlesen und Verarbeiten");
setSize(650, 440);
setVisible(true);
// ein shortcut zum Schließen
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
//dispose();
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e) {
fd1.setVisible(true);
lab1.setText("Directory: " + fd1.getDirectory());
display(fd1.getDirectory() + fd1.getFile());
}
public void display(String fname) { // Pfad auslesen
try {
FileInputStream fis1 = new FileInputStream(fname);
int fileSize = fis1.available();
byte buf1[] = new byte[fileSize];
fis1.read(buf1);
String str1 = new String(buf1);
ta1.setText(str1);
} catch (IOException e) {
//dispose();
System.exit(0);
}
// if (FileDialog.getFile() == null) {
// dispose();
// }
System.out.println("fname " + fname);
try {
// Runtime.getRuntime().exec("c:\\test\\TestdateiNotizen.xls");
// System.out.println(new
// File("c:\\test\\TestdateiNotizen.xls").exists() ? true : false);
Process p = Runtime.getRuntime().exec(
"rundll32 url.dll,FileProtocolHandler " + fname);
// Process p =
// Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "
// + "c:\\test\\TestdateiNotizen.xls");
} catch (Exception err) {
//dispose();
err.printStackTrace();
}
}
// Formatieren und Rechnen
void pb_verarbeiten_for_MouseClicked() {
HSSFWorkbook wb;
FileInputStream input = null;
try {
input = new FileInputStream(fname);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
System.out.println("Pfad nicht gefunden.");
e.printStackTrace();
}
try {
wb = new org.apache.poi.hssf.usermodel.HSSFWorkbook(input);
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("Pfad konnte nicht erfolgreich übernommen werden.");
e.printStackTrace();
}
}
Die Fehlermeldung "Pfad nicht gefunden." trifft glaube ich nicht zu, da es nur das ist, was ich bei Fehlschlag ausgeben lasse. Der Pfad stimmt auch auf jeden Fall, da ich mit dem Einlesen-Button die Datei öffnen kann. Sie jetzt mit dem POI auszuwählen ist das Problem. Da steht auch ständig Source nicht gefunden und wenn ich auf diese "Native Method" klicke, möchte er nen Pfad für die Source. Ich hab ihm den dann gegeben, wo die Sachen bei mir liegen, löst das Problem anscheinend aber nicht. :/
Eingebunden als Librarie sind sie eigentlich auch, also hat er den Pfad doch eigentlich??
Hat jemand die zündende Idee?