Aus Excel Tabelle lesen und Werte in Array speichern

MoinMoin

Mitglied
Hallo liebe Java-Forum Community,

ich bin neu hier und trete gleich mit einer Problemstellung an euch heran.

Ich habe eine Aufgabenstellung bekommen, die wiefolgt ist:

Es gibt einen Webservice, wo Vorgänge hinterlegt sind. Meine Aufgabe ist es, einige dieser Vorgänge zu löschen. Dafür gibt es eine Excel Tabelle, die mir Vorgangs IDs und den dazugehörigen Referenzschlüssel übergibt. Mit diesen Daten greife ich auf die Vorgänge zu und lösche diese.
Bis jetzt habe ich auch schon einen Client geschrieben, der auf den Webservice zugreift und nach Vorgängen suchen kann. Jetzt kommt die Problematik:
Da ich noch Student bin und gerade erst die Grundlagen der OOP erlernt habe, weiß ich nicht
wie ich folgendes implementiere:

1. Connect to Webservice (läuft per Client)
2. Öffne Excel Dokument (läuft, aber bis jetzt kann ich nur in der Excel-Tabelle selbst löschen, statt zu lesen und in ein Array zu speichern)
3. Nehme erste VorgangsID und ersten Referenzschlüssel (Speichere in Array oder Arraylist ???)
4. Übertragen an Webservice -> Vorgang existent?
5. Ja -> Vorgang löschen
6. Nehme nächste VorgangsID und nächsten Referenzschlüssel
7. Fahre mit schritt ( 4. ) fort, solange Excel-Tabelle not null.

Dies soll alles automatisch passieren und es soll nicht jede VorgangsID und jeder ReferenzSchlüssel per Hand eingegeben werden.

Ich habe mich schon mit APACHE POI vertraut gemacht und arbeite so auf dem Excel Dokument.

Ich hoffe ihr könnt mir da ein wenig weiterhelfen!

Lieben Gruß
 

Templarthelast

Bekanntes Mitglied
Warum erstellt du kein Objekt für jede excel zeile und speicherst diese in einer Liste.

Dann durchläufst du diese Liste und falls der eintrag existierst, löscht du den Eintrag.
 

ARadauer

Top Contributor
Ja wir können sicher weiterhelfen?
Wie ist deine Frage?

Wie du über die Zeilen von einem Excel mit Apache Poi iterierst? Welche Version nimmst du die alte? oder die neu für xslx?
 

MoinMoin

Mitglied
Danke erstmal für die schnelle Antwort.

Ich habe die aktuellste Version von Apache Poi installiert. Nochmal zur Verfeinerung meiner Frage:

Ich bekomme eine Excel-Tabelle mit Vorgangs ID's und einem Referenzschlüssel. Mit diesen Werten greife ich auf Vorgänge zu, die auf einer Datenbank in einem angebotenem Webservice zugreifen. Mit Hilfe der IDs und der Referenzschlüssel bin ich berechtigt, diese Vorgänge zu löschen. Mal ein Auszug meines Clients :

Java:
	public static void main(String[] args) throws Exception{
	       DefaultHttpClient httpclient = new DefaultHttpClient();
	        try {
	            HttpHost target = new HttpHost("XXXXXXXXX", 80, "http");
	        	HttpEntity entity = null;
	            HttpPost req = new HttpPost("XXXXXXXXXXX");

	            String username = "XXXXXXX";
	            String password = "XXXXXXX";
	            String authorizationHeaderValue = username + ":" + password;
	            BASE64Encoder encoder = new BASE64Encoder();
	            authorizationHeaderValue = "Basic " + encoder.encode(authorizationHeaderValue.getBytes());
	            Header authorizationHeader = new BasicHeader("Authorization", authorizationHeaderValue);
	            req.addHeader(authorizationHeader);
	            
	            String soapActionHeaderValue = "XXXXXXXXXX";
	            Header soapActionHeader = new BasicHeader("SOAPAction", soapActionHeaderValue);
	            req.addHeader(soapActionHeader);
	            
	            InputStream is = com.generali.test.Main.class.getClassLoader().getResourceAsStream("templateRequest");
	            String templateString = IOUtils.toString(is, "UTF-8");
	            
	            String hisVorgangsIdentifikation = JOptionPane.showInputDialog("Geben Sie bitte eine VorgangsID ein: ");
	            String referenzschluesselMeldung = JOptionPane.showInputDialog("Geben Sie einen Referenzschlüssel zur Bestätigung der Löschung an: " );
	            String referenzschluesselLoeschung = "L1";
	            String content = MessageFormat.format(templateString, hisVorgangsIdentifikation, referenzschluesselMeldung, referenzschluesselLoeschung);
	            
	            StringEntity stringEntity = new StringEntity(content);
	            stringEntity.setContentType("application/xml");
	            req.setEntity(stringEntity);

	            entity = req.getEntity();
	            if (entity != null) {
	                System.out.println(EntityUtils.toString(entity));
	            }

	            System.out.println("executing request to " + target);
	            HttpResponse rsp = httpclient.execute(target, req);

	            System.out.println("----------------------------------------");
	            System.out.println(rsp.getStatusLine());
	            Header[] headers = rsp.getAllHeaders();
	            for (int i = 0; i < headers.length; i++) {
	                System.out.println(headers[i]);
	            }
	            System.out.println("----------------------------------------");

	            entity = rsp.getEntity();
	            if (entity != null) {
	                System.out.println(EntityUtils.toString(entity));
	            }

	        } finally {
	            // When HttpClient instance is no longer needed,
	            // shut down the connection manager to ensure
	            // immediate deallocation of all system resources
	            httpclient.getConnectionManager().shutdown();
	        }	
	 	}

Hier hab ich es momentan so eingerichtet, dass ich einen bestimmten Vorgang mittels ID und Referenzschlüssel manuell suche. Dies soll aber automatisiert passieren, also mit Hilfe der Excel Tabelle.

- ID und Schlüssel aus Excel Tabelle nehmen
- Werte an den Webservice schicken
- Vorgang löschen
- Nächste ID und Schlüssel nehmen
- Werte an Webservice schicken
- Vorgang löschen
- alles solange, bis die Excel Tabelle durch ist

und genau da liegt mein Problem. Wie lese ich die einzelnen Werte aus der Excel Tabelle, speichere sie und schicke sie an den Webservice? Welche Vorgehensweise empfielt sich da?

Bin in meinem Studium noch nicht so weit, und da mich gerade in einem Praktikum befinde und diese von mir gerne eine Lösung dieser Aufgabenstellung hätten, möchte ich sie natürlich nicht enttäuschen!

Lieben Gruß !
 
Zuletzt bearbeitet:

Templarthelast

Bekanntes Mitglied
Ich würde dir statt POI das jexcel framework vorschlagen, solange es sich um .xls Datein handelt.

Das Auslesen funktioniert so wie in diesem Tutorial beschrieben.

Java:
List<AbfrageObjekt> objekte = new ArrayList()<>;
for(int i=0; i < sheet.getRows(); i++) {
AbfrageObjekt ab = new AbfrageObjekt();
ab.setReferenzId(sheet.getCell(i, 1)); // Wenn die ReferenzId in der 2. Spalten liegen würde;
ab.setSchluessel(sheet.getCell(i, 2)); 
objekte.add(ab);
}

// Führe Webserviceanfrage mit List durch

for(AbfrageObjekt a : objekte) {
if(gefunden) {
objekte.remove(a);
}
 // ...
}

AbfrageObjekt.java

Java:
public class AbfrageObjekt() {
private int referenzId;
private String schluessel;

// Getter & Setter
 

MoinMoin

Mitglied
Bei mir kommt jetzt immer die fehlermeldung: ArrayOutOfBounds...
So wie ich deinen Code verstanden habe, nimmste dir jede Zeile vor, nimmst dort dann die erste und zweite Zelle und speicherst diese. Nur warum dann der Fehler.. Er geht doch eigentlich soweit, bis keine Rows mehr belegt sind. Aber nur jeweils die erste und zweite Zelle. Geht er da etwa weiter?


Auszug des Codes:

Java:
                       .....................

                                      Workbook workbook = Workbook.getWorkbook(new File("d:/test.xls")); 

	    		Sheet sheet = workbook.getSheet(0);
	    		
	    		List<AbfrageObjekt> objekte = new ArrayList<AbfrageObjekt>();
	    		
	    		AbfrageObjekt ao = new AbfrageObjekt();
	    		
	    		for (int i=0; i < sheet.getRows(); i++) {
	    		ao.setVorgangsID(sheet.getCell(i, 1)); // Wenn die VorgangsId in der 2. Spalten liegen würde;
	    		ao.setSchluessel(sheet.getCell(i, 2)); 
	    		objekte.add(ao);	            
	    		}   

	            
	            Cell hisVorgangsIdentifikation =  ao.getVorgangsID(); 
	            Cell referenzschluesselMeldung = ao.getSchluessel();
	            String referenzschluesselLoeschung = "L1";

                 ........................

Vielen Dank bis dahin, Templar !
 
Zuletzt bearbeitet:

Templarthelast

Bekanntes Mitglied
Du solltest ein neues Objekt in der Schleife erzeugen. Es macht hier keinen Unteschied, könnte dir aber helfen, falls du Funktionalität im Konstruktor der AnzeigeObjektklasse einbaust. Ansonsten sieht das schonmal ganz gut aus.
 

Templarthelast

Bekanntes Mitglied
Falls du nochmal auf ein solches (eigentlich primitves) Problem stoßen solltest, würde ich an deiner Stelle, mir einfach die Zeit nehmen, um kurz Google danach zu fragen.

z.B. bei "read xls java" bekomme ich direkt einen Tutorial link von Lars Vogel.

Dieser Beitrag soll keine Kritik an deiner Frage sein, sondern dir nur eine Möglichkeit zeigen, ohne direkte Hilfe Probleme lösen zu können.
 

MoinMoin

Mitglied
Es ist ja nicht so, dass ich nicht im Google Jungle war .. Ich habe Tage damit verbracht um zu suchen. Nur leider erstmal nach Tutorials von Apache POI zu dieser Sache. Aber ich finde, dass man mit JExcel schon etwas angenehmer arbeiten kann. Ich danke dir für den Tipp, versuche durch den Code mal durchzusteigen. Da es hier in der Firma immernoch keinen Testfall gibt,
hab ich also noch Zeit etwas rumzuwerkeln.

Vielleicht kannst du mir ja dann bei meiner zweiten Frage helfen.. und zwar :

Wenn ich es jetzt geschafft habe, dass er die Spalten einliest und sich zum Webservice connected um es zu löschen, wie lösche ich diesem moment dann dieses gefundene File? Das hab ich auch nochnicht implementiert. Kennst du dich damit vielleicht aus?

Vielen Dank bis dahin Templar...

Lieben Gruß !
 

Templarthelast

Bekanntes Mitglied
Da du keinen gleichzeitigen Schreib- und Lesezugriff haben kannst, wäre es wohl das einfachste die Datei mit den noch vorhandenen Daten zu überschreiben. Falls deine xls besondere Formatierung haben, kannst du eine muster.xls laden.
Code:
Workbook.createWorkbook(new File(Speicherdatei), writeableworkbook)
 

MoinMoin

Mitglied
Ich glaub ich hab meine Aufgabenstellung etwas falsch erläutert.. Ich soll nicht die VorgangsIDs und den Schlüssel in der Excel Tabelle selbst löschen, sondern den Vorgang, den ich mit der VorgangsID und dem Schlüssel erreiche.

Man muss sich vorstellen,

- Es gibt in einer Datenbank einen Vorgang, auf den ich mit dem Webservice zugreifen kann.
- Um auf diesen zuzugreifen, benötige ich dessen Vorgangs-ID und den Referenzschlüssel.
- Jeder Vorgang hat eine ID und einen Schlüssel. Der Schlüssel ist dazu da, um zu kontrollieren, ob es auch wirklich der richtige Vorgang ist..
- Beispiel: In der Excel Tabelle befindet sich eine VorgangsID "1234" und ein Schlüssel "5678"
Jetzt log ich mich auf den Webservice ein.. Der sucht nach dem Vorgang mit der VorgangsID "1234"... wenn er den
gefunden hat, checkt er den Schlüssel.. Wenn dieser auch stimmt, komme ich zu dem Punkt ihm zu sagen,
Vorgang auf der Datenbank löschen!!

-das geht jetzt solange weiter, bis ich keine VorgangsID's und Schlüssel in der Excel Tabelle habe.

Und genau darin besteht mein zweites Problem.. Die Implementierung des Lösch-Algorithmus..

Lieben Gruß,
 
S

SlaterB

Gast
> Ich glaub ich hab meine Aufgabenstellung etwas falsch erläutert..
das kann man wohl sagen,
erst geht es um das Auslesen von Excel,
dann willst du unmissverständlich die Excel-Datei auf der Festplatte löschen
nun geht es um Datenbankzugriff

es ist nicht grad sinnvoll, hier in einem Theme mit Überschrift 'Excel' noch viele andere Themen zu vermischen,
führe geistig eine Trennung der Aufgaben ein, ein Punkt ist das Einlesen von Information aus Excel,

danach kommt vielleicht die Kommunikation mit deinem WebService, dafür ist vollkommen egal woher die Daten kommen
oder was der WebService damit macht

in einer DB Daten zu löschen ist wiederum unabhängig vom Ort des ganzen, ob WebService oder normales Java-Programm,
noch weniger interessiert, woher die Id stammt die aktuell gelöscht wird, es ist einfach nur 'Id löschen', ein Problem für sich,
auch mit Schleifen und Gesamtvorgang aufpassen, gehört manchmal dazu, manchmal eher egal

natürlich kannst du alles hier fragen, zuviele Themen nerven auch,
aber wundere dich nicht wenn keiner mitkommen sollte

überspitzt: es gibt einen Datenbank-Bereich mit vielen Datenbank-Experten, die nur auf Fragen warten,
aber hier bei Excel wohl kaum reinschauen ;)

Java-Basics als Bereich passt sowieso gar nicht, ich verschiebe jetzt
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
C Zeilen-"Vektor" aus Excel-Tabelle suchen Allgemeine Java-Themen 0
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
R Datum in Excel Tabelle eintragen Allgemeine Java-Themen 6
P java tabelle auslesen - xls (excel) fehler Allgemeine Java-Themen 5
A Excel Tabelle in JFrame darstellen Allgemeine Java-Themen 6
M Rein informativ - Daten aus Excel-Tabelle in Java-Programm importieren Allgemeine Java-Themen 3
S Excel Tabelle Allgemeine Java-Themen 8
M Daten in Excel Tabelle schreiben? Allgemeine Java-Themen 7
OnDemand Excel lesen wie CSV Allgemeine Java-Themen 7
M Excel Datei Erstellen Allgemeine Java-Themen 2
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
O Wie kann ich in Apache POI (Excel Dateien schreiben) Datumszellen in Excel erzeugen Allgemeine Java-Themen 6
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
D ODS.Datei öffnet leider in Excel Allgemeine Java-Themen 3
L JavaFX JavaFX Chart in Apache Poi Excel Datei Allgemeine Java-Themen 2
G Excel File öffnen, in Zelle schreiben, abspeichern Allgemeine Java-Themen 6
G Excel Datum richtig auf der Konsole ausgeben Allgemeine Java-Themen 1
Trèfle Excel-Datei nicht speicherbar, da von Java zum Bearbeiten gesperrt. Allgemeine Java-Themen 3
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
C Aus MEHREREN Excel Tabellen bestimmte Zelle addieren Allgemeine Java-Themen 1
offi Excel mit Inhalten aus DB öffnen ohne zu speichern Allgemeine Java-Themen 8
R EXCEL Range und HSSF POI CellRangeAddress Allgemeine Java-Themen 1
J Apache POI Excel- Blattschutz aufheben Allgemeine Java-Themen 2
ms_cikar Java Excel bearbeiten spalten werden überschrieben. Allgemeine Java-Themen 4
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
U Java Excel export Allgemeine Java-Themen 1
M Excel Formel in Java Allgemeine Java-Themen 7
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
A In Excel-Datei schreiben, Formeln der Mappe anwenden, Wert lesen Allgemeine Java-Themen 3
T Java Excel Drop Down Formularsteuerelement Allgemeine Java-Themen 0
C Benutzereingabe von EXCEL-Funktionen parsen Allgemeine Java-Themen 4
T Excel - mit jxf sprachabhängige Formeln schreiben Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
J Ausgabe nach Excel Allgemeine Java-Themen 1
Todesbote Excel Zellen umranden Allgemeine Java-Themen 1
Todesbote Excel Blattschutz aufheben und Daten einfügen Allgemeine Java-Themen 3
G Langtexte - Cellformat import in Excel Allgemeine Java-Themen 3
R Variablen per HSSF geheime Werte von JAVA an EXCEL Allgemeine Java-Themen 2
J excel einbinden Allgemeine Java-Themen 2
M Threads Excel files bearbeiten Allgemeine Java-Themen 4
S Java & Excel Allgemeine Java-Themen 4
C Java Excel Button Allgemeine Java-Themen 2
M Bilder aus Excel auslesen Allgemeine Java-Themen 6
A Excel nach bestimmten Inhalt durchsuchen Allgemeine Java-Themen 8
P Absatz im String / Excel / /n geht nicht Allgemeine Java-Themen 2
H Excel Ausdrucken per Knopfdruck Allgemeine Java-Themen 6
P Excel-Sheets erzeugen aus Report Allgemeine Java-Themen 2
E Excel Datei weiter verarbeiten Allgemeine Java-Themen 4
M POI Excel Cell copie Allgemeine Java-Themen 4
J Zeilenumbruch - Excel Export HSSF Allgemeine Java-Themen 10
C Strings in Excel einlesen! Allgemeine Java-Themen 2
G Input/Output Apache POI Excel Allgemeine Java-Themen 5
N POI Passwortgeschützte Excel-Datei bearbeiten Allgemeine Java-Themen 3
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
M POI Excel Problem mit akt. der Summenfelder aus Vorlage Allgemeine Java-Themen 4
T DLL in Java einbinden (Quelltext aus Excel VBA) Allgemeine Java-Themen 5
S Excel -> Webseiten Formular -> Excel Allgemeine Java-Themen 5
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
V Apache POI Excel Datum auslesen Allgemeine Java-Themen 6
V Apache POI Excel Sheet auslesen Allgemeine Java-Themen 5
C Datum in Excel auslesen Allgemeine Java-Themen 13
B Excel Datei in einem Java Programm mit GUI darstellen Allgemeine Java-Themen 9
G Excel Menüsteuerung ansprechen Allgemeine Java-Themen 3
M Poi-Excel: vorhandene Formatierung verwenden Allgemeine Java-Themen 2
T OLE-Automation mit Excel (Wert übergabe) Allgemeine Java-Themen 1
T Jakarta Objekt (Excel Sheet) in Swing/SWT einbetten Allgemeine Java-Themen 3
H POI Excel lesen und schreiben Allgemeine Java-Themen 10
T Apache POI Export EXCEL - [Zahlen-Werte] Allgemeine Java-Themen 1
S Excel in mySQL importieren Allgemeine Java-Themen 3
B JEE Excel Kalkulation Allgemeine Java-Themen 5
J Java-Neuling und Excel - autsch! Allgemeine Java-Themen 16
G Excel-Daten in Datenbank speichern - Problem mit leeren Feldern Allgemeine Java-Themen 7
mh Excel mit POI auslesen Allgemeine Java-Themen 5
S Passwort geschützte Excel Datei öffnen (POI) Allgemeine Java-Themen 4
S Java Excel bestimmte Zellen auslesen (POI HSSF) Allgemeine Java-Themen 11
J Mit POI Zeile in Excel löschen Allgemeine Java-Themen 5
Y Excel datei einlesen und inhalt verarbeiten Allgemeine Java-Themen 8
M Formattierung von Excel Spalten mit jxl Allgemeine Java-Themen 4
G Daten von Excel kopieren - sinnvolle Datenstruktur? Allgemeine Java-Themen 3
A CSV-Datei (Spalt A -> Excel) in Array packen und auslesen Allgemeine Java-Themen 25
G Excel Werte / Zellen formatieren Allgemeine Java-Themen 5
F Formatieren von Zellen in Excel mit Java POI Allgemeine Java-Themen 5
R Excel Export Allgemeine Java-Themen 5
A Excel-Datei öffnen Allgemeine Java-Themen 9
T JCom Beispeil mit Excel Allgemeine Java-Themen 4
S Daten extrahieren aus Excel Dateien (auch 2k7) Allgemeine Java-Themen 4
MQue Excel bzw. *.csv-Datei lesen Allgemeine Java-Themen 12
M JAVA und Excel Allgemeine Java-Themen 8
R Excel auslesen Allgemeine Java-Themen 4
G Java POI HSSF Excel Datei Gruppierung und Gliederung Allgemeine Java-Themen 2
S Anzahl der Stunden in Excel Datei schreiben Allgemeine Java-Themen 2
S In excel Datei schreiben Allgemeine Java-Themen 1
V (Excel-) Datei geöffnet? Allgemeine Java-Themen 4
M Excel Massaker Allgemeine Java-Themen 3
G mit Apache-Jakarta-POI auch Graphiken aus Excel einlesen? Allgemeine Java-Themen 3
T Wieso erfolgt keine Ausgabe. /Excel Allgemeine Java-Themen 19
F Xml-datei zu Excel exportieren Allgemeine Java-Themen 5
ARadauer Excel Datei in Excel aus Java heraus öffnen Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben