Lesen aus einem Excel File

rafi072001

Mitglied
Hi ich benötige Hilfe bei meinem Code.

Alle anderen Methoden außer die findAdressByName funktionieren. Es wird die ganze Zeit der leere String returned, aber wich weiß nicht warum..

[CODE lang="java" title="Main"]package utils;

public class Main {

public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub


ExcelUtils eu = new ExcelUtils("./data/Test.xlsx");
eu.findAddressByName("Henry");
eu.getCellData();

}

}[/CODE]
[CODE lang="java" title="ExcelUtils"]package utils;

import java.io.File;
import java.io.IOException;

import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class ExcelUtils {

static XSSFWorkbook workbook;
static XSSFSheet sheet;


public ExcelUtils(String excelPath) throws IOException{

workbook = new XSSFWorkbook(excelPath);
sheet = workbook.getSheet("Tabelle1");

}







public static void getCellData() throws IOException{




DataFormatter formatter = new DataFormatter();

Object value = formatter.formatCellValue(sheet.getRow(1).getCell(0));

System.out.println(value);





}



public static void getRowCount() throws IOException {




int rowCount = sheet.getPhysicalNumberOfRows();
System.out.println("Number of Row Count" + rowCount);






}



public static String findAddressByName(String nameToSearch) throws IOException {



for (int rowIndex = 0; rowIndex < sheet.getLastRowNum(); rowIndex++) {
XSSFRow row = sheet.getRow(rowIndex);
if (row != null && row.getCell(0).getStringCellValue().equals(nameToSearch)) {
return row.getCell(1).getRawValue();

}
}
return "";
}
}
[/CODE]
 
K

kneitzel

Gast
Was die Methode eu.findAddressByName("Henry"); zurück gibt, weisst Du ja nicht, denn mit der Rückgabe machst du ja nichts!

Und das, was Du dann ausgibst (getCellData), ist einfach nur die erste Zelle in der zweiten Zeile. Das ist vollkommen unabhängig von der ersten Methode ....

Generell sollte man bei Methoden, die etwas zurück geben, dies auch speichern / verwerten.
Bei den Namen sollte man auch aufpassen: getIrgendwas sollte Irgendwas zurück geben. Da ist also ein Typ von void falsch, Das wäre dann eher ein printIrgendwas, wenn Irgendwas nur ausgegeben wird (Bezieht sich auf getRowCount).
 

rafi072001

Mitglied
Was die Methode eu.findAddressByName("Henry"); zurück gibt, weisst Du ja nicht, denn mit der Rückgabe machst du ja nichts!

Und das, was Du dann ausgibst (getCellData), ist einfach nur die erste Zelle in der zweiten Zeile. Das ist vollkommen unabhängig von der ersten Methode ....

Generell sollte man bei Methoden, die etwas zurück geben, dies auch speichern / verwerten.
Bei den Namen sollte man auch aufpassen: getIrgendwas sollte Irgendwas zurück geben. Da ist also ein Typ von void falsch, Das wäre dann eher ein printIrgendwas, wenn Irgendwas nur ausgegeben wird (Bezieht sich auf getRowCount).
Oh mann. Stimmt das habe ich voll vergessen
 

rafi072001

Mitglied
Was die Methode eu.findAddressByName("Henry"); zurück gibt, weisst Du ja nicht, denn mit der Rückgabe machst du ja nichts!

Und das, was Du dann ausgibst (getCellData), ist einfach nur die erste Zelle in der zweiten Zeile. Das ist vollkommen unabhängig von der ersten Methode ....

Generell sollte man bei Methoden, die etwas zurück geben, dies auch speichern / verwerten.
Bei den Namen sollte man auch aufpassen: getIrgendwas sollte Irgendwas zurück geben. Da ist also ein Typ von void falsch, Das wäre dann eher ein printIrgendwas, wenn Irgendwas nur ausgegeben wird (Bezieht sich auf getRowCount).
Hallo,

ich habe nun nochmal um meinem Methodenaufruf eine System.out.println gebaut. Jedoch kommt immer noch kein Rückgabewert.
 
K

kneitzel

Gast
Dann gib uns doch bitte die genauen Details:
- Wie sieht Dein Code jetzt genau aus?
- Wie sieht die Datei aus, auf der Du das anwendest?
 

rafi072001

Mitglied
Dann gib uns doch bitte die genauen Details:
- Wie sieht Dein Code jetzt genau aus?
- Wie sieht die Datei aus, auf der Du das anwendest?122.PNG
Tut mir leid, dass ich so spät antworte... mir wurde irgendwie nicht angezeigt, dass ich eine Nachricht bekommen habe.
Der Aufruf sieht nun so aus. Der Rest ist immer noch gleich.




[CODE lang="java" title="Main"]package utils;

import java.io.IOException;

public class Main {

public static void main(String[] args) throws IOException {


ExcelUtils eu = new ExcelUtils("./data/Test.xlsx");
System.out.println( eu.findAddressByName("Henry"));

// TODO Auto-generated method stub

}

}
[/CODE]
 
K

kneitzel

Gast
Bitte immer das Verhalten, das Du bekommen hast, genau beschreiben!

Das Problem bei dem Code ist also, dass Du keinen Ort ausgegeben bekommst sondern eine Zahl.

Dies ist einfach erklärbar, wenn man sich einmal die Beschreibung von getRawValue anschaut:
"If the cell contains a string, then this value is an index into the shared string table, pointing to the actual string value. Otherwise, the value of the cell is expressed directly in this element. Cells containing formulas express the last calculated result of the formula in this element."

Du willst ja Strings auslesen - und du hast es ja in der Zeile drüber auch schon richtig gemacht. Nutz einfach auch dort getStringCellValue.
 

rafi072001

Mitglied
Bitte immer das Verhalten, das Du bekommen hast, genau beschreiben!

Das Problem bei dem Code ist also, dass Du keinen Ort ausgegeben bekommst sondern eine Zahl.

Dies ist einfach erklärbar, wenn man sich einmal die Beschreibung von getRawValue anschaut:
"If the cell contains a string, then this value is an index into the shared string table, pointing to the actual string value. Otherwise, the value of the cell is expressed directly in this element. Cells containing formulas express the last calculated result of the formula in this element."

Du willst ja Strings auslesen - und du hast es ja in der Zeile drüber auch schon richtig gemacht. Nutz einfach auch dort getStringCellValue.

Hi , stimmt.

Ehrlich gesagt finde ich es gar nicht so blöd eine Adresse zurück zu bekommen. Wie müsste ich dann aber den Rückgabetyp der der Methode festlegen ?
 

rafi072001

Mitglied
Auf StackOverflow habe ich noch folgendes gefunden:
Das Problem ist, dass es bei mir den Datentyp cell nicht gibt. Ich habe auch jegliche Sachen importiert die mir vorgeschlagen wurde. Muss ich da manuell irgendwas importieren ? Wenn ja wie funktioniert das ?

Java:
private static int findRow(HSSFSheet sheet, String cellContent) {
    for (Row row : sheet) {
        for (Cell cell : row) {
            if (cell.getCellType() == Cell.CELL_TYPE_STRING) {
                if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) {
                    return row.getRowNum(); 
                }
            }
        }
    }               
    return 0;
}
 
K

kneitzel

Gast
Ehrlich gesagt finde ich es gar nicht so blöd eine Adresse zurück zu bekommen. Wie müsste ich dann aber den Rückgabetyp der der Methode festlegen ?
Was nützt Dir denn die interne Adresse des Strings in der internen String Tabelle des Dokumentes?

Außen in Deinem Code ist das doch nicht wirklich von Wert.

Und was den anderen Code angeht: Zumindest in der Apache POI Version würde ich etwas wie dies erwarten:

Java:
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;



    private static int findRow(HSSFSheet sheet, String cellContent) {
        for (Row row : sheet) {
            for (Cell cell : row) {
                if (cell.getCellType() == CellType.STRING) {
                    if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) {
                        return row.getRowNum();
                    }
                }
            }
        }
        return -1;
    }

Aber da hast Du auch extrem viel mit static in Deinem Code - das ist ja unnötig. So eine Textklasse könnte also so aussehen:
Java:
import java.io.File;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;



public class ExcelUtils {
    XSSFWorkbook workbook;
    XSSFSheet sheet;

    public ExcelUtils(String excelPath) throws IOException{
        workbook = new XSSFWorkbook(excelPath);
        sheet = workbook.getSheet("Tabelle1");
    }

    public static void main(String[] args) throws Exception {
        ExcelUtils eu = new ExcelUtils("./Addressen.xlsx");
        System.out.println(eu.findRow("Henry"));
    }

    public String findAddressByName(String nameToSearch) {
        for (int rowIndex = 0; rowIndex < sheet.getLastRowNum(); rowIndex++) {
            XSSFRow row = sheet.getRow(rowIndex);
            if (row != null && row.getCell(0).getStringCellValue().equals(nameToSearch)) {
                System.out.println("Found: " + row.getCell(1).getStringCellValue());
                System.out.println("Raw: " + row.getCell(1).getRawValue());
                return row.getCell(1).getRawValue();
            }
        }
        return "";
    }

    private int findRow(String cellContent) {
        for (Row row : sheet) {
            for (Cell cell : row) {
                if (cell.getCellType() == CellType.STRING) {
                    if (cell.getRichStringCellValue().getString().trim().equals(cellContent)) {
                        return row.getRowNum();
                    }
                }
            }
        }
        return -1;
    }
}

Edit: Ach ja - ich hatte gar nicht erwähnt: Der default Wert, der zurück gegeben wird, wurde von 0 auf -1 geändert. 0 könnte eine valide Rückgabe sein wenn der Text in der ersten Zeile gefunden wird ...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
sourcecorn Werte aus einem File lesen Java Basics - Anfänger-Themen 6
G Bis zu einem bestimmten Punkt aus Datei lesen Java Basics - Anfänger-Themen 2
S Werte aus einem Textfeld lesen Java Basics - Anfänger-Themen 13
H Problem beim lesen des InputStreams von einem Subprozess Java Basics - Anfänger-Themen 4
F Ist lesen Text von einem Zip File besonders langsam??? Java Basics - Anfänger-Themen 4
K Text aus einem Datei lesen , und im JTextArea ausgeben. Java Basics - Anfänger-Themen 3
Ollek Bestimmtes Wort aus einem Dokument lesen Java Basics - Anfänger-Themen 7
K Daten aus einem Textfield lesen ? Java Basics - Anfänger-Themen 4
K Zeilenweise lesen aus einem Array Java Basics - Anfänger-Themen 12
D ein File(Datei) lesen und diesen zu einem Hashmap hinfügen? Java Basics - Anfänger-Themen 5
L Aus einem CipherInputStream lesen Java Basics - Anfänger-Themen 4
A Hilfe beim Lesen von Pfaden und Systemvariablen Java Basics - Anfänger-Themen 3
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
Say 2-DIM Array Code lesen und verstehen Java Basics - Anfänger-Themen 5
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
W Timestamp lesen Java Basics - Anfänger-Themen 6
J Dateien lesen und schreiben Java Basics - Anfänger-Themen 5
F MS365 Kalender lesen Java Basics - Anfänger-Themen 5
Robin Gentele XML von Webserver lesen und ausgeben Java Basics - Anfänger-Themen 5
H Scripte oder Programmcode aus Datei lesen? Java Basics - Anfänger-Themen 5
S Zufällige ungerade Zeile aus Text-Datei lesen Java Basics - Anfänger-Themen 5
C Fehlermeldungen lesen Java Basics - Anfänger-Themen 2
S Allgemeine Java Codes lesen und verstehen Java Basics - Anfänger-Themen 7
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
T Klassen Den Wert aus Array lesen lassen Java Basics - Anfänger-Themen 12
J Lesen und schreiben in eine Datei(Anfänger- Dateizugriffe) Java Basics - Anfänger-Themen 3
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
S Java Array Länge aus anderer Klasse lesen Java Basics - Anfänger-Themen 1
G Excle datei aus resources folder finden und lesen Java Basics - Anfänger-Themen 5
J Datei aus Projektfolder lesen Java Basics - Anfänger-Themen 12
H Vererbung Static Scanner Objekt verwenden - von StdIn in einer importierten Klasse lesen Java Basics - Anfänger-Themen 10
K Probleme beim Programm schreiben - Lesen von Dateiinhalten -zaehlen von Wörtern/ Buchstaben Java Basics - Anfänger-Themen 4
S Tastatur input lesen Java Basics - Anfänger-Themen 7
S Mit FileReader lesen, in ArrayList speichern Java Basics - Anfänger-Themen 4
B Aus Datei lesen Java Basics - Anfänger-Themen 23
B Aus Datei lesen Java Basics - Anfänger-Themen 0
deatzi Wert aus anderer Klasse lesen Java Basics - Anfänger-Themen 7
W Wie lasse ich meine Ausgabe nach dem Lesen verschwinden ? Java Basics - Anfänger-Themen 1
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
C Input/Output Datei aus Startverzeichnis lesen Java Basics - Anfänger-Themen 6
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
G Input/Output Aus txt-Datei lesen, aus Ordner Java Basics - Anfänger-Themen 1
S BufferedReader nächste Zeile lesen Java Basics - Anfänger-Themen 4
G Jar-Archiv zum Lesen einer Konfigurationsdatei Java Basics - Anfänger-Themen 9
MaxG. Input/Output Datei lesen Java Basics - Anfänger-Themen 3
Hacer Quellcode lesen Java Basics - Anfänger-Themen 13
H Aus wav-datei lesen und in neue wav-datei speichern Java Basics - Anfänger-Themen 10
N Lesen eines files mit FILES.lines Java Basics - Anfänger-Themen 11
A Private Attribut aus fremder Klasse lesen ? Java Basics - Anfänger-Themen 19
R Ab einer bestimmten Zeile lesen Java Basics - Anfänger-Themen 3
P vokale konsonanten ziffern satzzeichen aus string lesen. hab kiene ahnung Java Basics - Anfänger-Themen 10
A textfeldwerte aus array lesen Java Basics - Anfänger-Themen 27
K Classpath Lesen von Property-File Java Basics - Anfänger-Themen 1
D Methoden Array aus Datei lesen und weitergeben? Java Basics - Anfänger-Themen 7
T 'Nix' aus Textdokument lesen Java Basics - Anfänger-Themen 11
G tga Datei lesen und in eine matrix umwandeln Java Basics - Anfänger-Themen 1
F Input/Output Dateien lesen/schreiben Java Basics - Anfänger-Themen 1
E lesen csv file column by column Java Basics - Anfänger-Themen 10
K Mit Scanner aus einer txt Datei lesen und jede Person mit name, vorname, geburtsdatum speichern Java Basics - Anfänger-Themen 5
K Dateien lesen | IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
E Input/Output Property-Datei aus einer Zip lesen in in einer anderen Zip-Datei ist Java Basics - Anfänger-Themen 3
B Input/Output Scanner-Probleme bei String-Lesen Java Basics - Anfänger-Themen 3
I Properties oder Umgebungsvariablen mit ${irgendwas} lesen? Java Basics - Anfänger-Themen 2
D Lesen aus Datei (java.util.NoSuchElementException) Java Basics - Anfänger-Themen 22
D Problem beim Lesen einer txt-Datei Java Basics - Anfänger-Themen 8
G Zeile charweise lesen Java Basics - Anfänger-Themen 3
J Aus Datei lesen und ausgeben Java Basics - Anfänger-Themen 4
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
G Datei zeilenweise lesen Java Basics - Anfänger-Themen 19
M Wie sämtliche Schlüssel und Attibutwerte aus einer Propertie Datei lesen? Java Basics - Anfänger-Themen 3
S Compiler-Fehler jOpenDocument Kompelierfehler - ODS Datei lesen Java Basics - Anfänger-Themen 2
C Aus einer Textdatei Zahlen lesen mit Leerzeichen Java Basics - Anfänger-Themen 11
T BufferReader soll datei mehrmals lesen Java Basics - Anfänger-Themen 13
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
F Effizientes Lesen von 65 Datein mit Boolean Werten Java Basics - Anfänger-Themen 6
S Datei aus JAR lesen. Java Basics - Anfänger-Themen 9
G Zeilenweise lesen Java Basics - Anfänger-Themen 17
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
B Erst lesen: Automatisch Texteingabe bestätigen Java Basics - Anfänger-Themen 6
S Textdatei lesen, Methode gibt nur die letzte Zeile aus. Warum? Java Basics - Anfänger-Themen 5
X Einen Text aus dem Netz lesen?! Java Basics - Anfänger-Themen 3
J Java API lesen lernen Java Basics - Anfänger-Themen 4
Z Problem beim Lesen und Schreiben einer Datei Java Basics - Anfänger-Themen 10
N Erste Zeile bei BufferedReader doppelt lesen? Java Basics - Anfänger-Themen 2
R Input/Output einzelnes char aus .txt lesen Java Basics - Anfänger-Themen 11
R XML mit unsortierten Nodes lesen Java Basics - Anfänger-Themen 4
M Zahlen aus Array lesen Java Basics - Anfänger-Themen 19
I Methoden zum lesen und speichern von Dateien Java Basics - Anfänger-Themen 2
M Dateien erstellen/ bearbeiten/ lesen Java Basics - Anfänger-Themen 9
M Input/Output Viele short aus Datei lesen und von Little Endian zu Big Endian umwandeln Java Basics - Anfänger-Themen 12
J Lesen von Textdokumenten Java Basics - Anfänger-Themen 3
J Zeichen aus String Array lesen Java Basics - Anfänger-Themen 13
J Können mehere Threads parallel eine Datei lesen? Java Basics - Anfänger-Themen 4
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
J Erste Schritte ExceptionError beim Lesen eines .ZIP Java Basics - Anfänger-Themen 19
B Javadoc richtig lesen... Java Basics - Anfänger-Themen 4
S Zeichen von Telnet lesen Java Basics - Anfänger-Themen 5
H Lesen einer Texdatei im Web Java Basics - Anfänger-Themen 10
J Input/Output Textdatei in einer JAR lesen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben