Importieren Sie Excel-Daten mit Java 2

Nach dem letzten Mal ist diesmal auch der Inhalt des Apache POI.

Informationen zum Erhalten des Zellenwerts

Über den Teil, der in einer anderen Methode über den Teil beschrieben wurde, um den Wert der vorherigen Zelle zu erhalten. Es scheint, dass der Zellenwert nicht einfach so kommt, wie er ist. Auszug aus der vorherigen Methode.

SamplePOI.java


    private static String getCellStringValue(Cell cell) {
        String retStr;
        CellType cellType = cell.getCellType();
        switch (cellType) {
        case STRING:
            retStr = cell.getStringCellValue();
            break;
        case NUMERIC:
            retStr = String.valueOf(cell.getNumericCellValue());
            break;
        case BOOLEAN:
            retStr = String.valueOf(cell.getBooleanCellValue());
            break;
        case FORMULA:
            retStr = String.valueOf(cell.getCellFormula());
            break;
        case ERROR:
            retStr = String.valueOf(cell.getErrorCellValue());
            break;
        default:
            retStr = "";
            break;
        }
        return retStr;
    }
}

Hier wird zuerst der Typ der zu erfassenden Zelle bestimmt (Variablentyp in Java? State?). Es scheint, dass sich die für die Erfassung verwendete Methode je nach Typ ändert.

Über den Zelltyp

Sie können den Zelltyp mit der Methode getCellType abrufen. Insbesondere gibt es die folgenden sieben. ・ ** CellType._NONE ** Unbekannte Zelle. Ich bin nicht sicher, aber es ist eine Zelle, die selten erscheint.

・ ** CellType.BLANK ** Leere Zelle.

・ ** CellType.BOOLEAN ** Boolescher Wert. Für Zellen, die nach TRUE, FALSE oder Authentizität fragen (z. B. "= A1 = A2").

・ ** CellType.ERROR ** Error. Möglicherweise ist ein Berechnungsfehler eine Zelle, die einen Fehler in der Formel aufweist.

・ ** CellType.FORMULA ** Formel. Eine Zelle, die wie "= A1 + B1" berechnet und als berechneter Wert auf dem Display angezeigt wird. Da die Formel selbst mit der Methode getCellFormula erhalten werden kann, kann "= A1 + B1" wie durch Konvertieren in String erhalten werden.

・ ** CellType.NUMERIC ** Numerischer Wert. Eine Zelle, die Zahlen oder Daten enthält.

・ ** CellType.STRING ** Zeichenkette. Eine Zelle, deren Inhalt Text ist. Wenn Sie in Excel Zahlen als Zeichenfolgen verwendet haben, werden die Zahlen auch hier angezeigt. (Sollte)

Bestätigung

SamplePOI2.java



public class SamplePOI2 {

    /*
     *Dieser Prozess
     */
    public static void main(String[] args) {
        //Geben Sie hier den vollständigen Pfad der Excel-Datei ein, die Sie importieren möchten
        String ExcelPath = "";

        //Objekte für Excel
        Workbook wb;
        Sheet sh;
        Row row;
        Cell cell;

        //Liste für gespeicherte Daten
        List<String> columnA_List = new ArrayList<>();

        try (InputStream is = new FileInputStream(ExcelPath)) {

            //Importieren Sie die Excel-Zieldatei in Java
            wb = WorkbookFactory.create(is);
            //Geben Sie das erste Blatt der Zieldatei an
            sh = wb.getSheetAt(0);
            //Holen Sie sich die maximale Zeile im Blatt
            int rowMaxA = sh.getLastRowNum();

            //Drehen Sie die Schleife für die maximale Zeile und erhalten Sie die Zelle der Spalte A als String-Typ
            for (int i = 0; i <= rowMaxA; i++) {
                row = sh.getRow(i);
                if (row == null) {
                    continue;
                }
                cell = row.getCell(0);
                String cellValue = getCellTypes(cell);
                columnA_List.add(cellValue);
            }

            //Ausgabe an die Konsole

            for (String outStr : columnA_List) {
                System.out.println(outStr);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /*
     *Bestimmt den Zellenstatus und gibt ihn als String-Typ zurück.
     */
    private static String checkCellType(Cell cell) {
        String retStr="";
        CellType cellType = cell.getCellType();
        switch (cellType) {
        case _NONE:
            retStr ="_NONE";
            break;
        case BLANK:
            retStr ="BLANK";
            break;
        case BOOLEAN:
            retStr ="BOOLEAN";
            break;
        case ERROR:
            retStr ="ERROR";
            break;
        case FORMULA:
            retStr ="FORMULA";
            break;
        case NUMERIC:
            retStr ="NUMERIC";
            break;
        case STRING:
            retStr ="STRING";
            break;
        }
        return retStr;
    }

image.png Das Ergebnis des Ladens dieses Excel ist

cellType.result


BLANK
BOOLEAN
ERROR
FORMULA
NUMERIC
STRING

ist geworden.

Über Akquisition

Wenn Sie den Zelltyp kennen, erhalten Sie den Wert für jeden Zelltyp. STRING getStringCellValue() Oder cell.getRichStringCellValue().getString() Erhalten bei. Ich verstehe den Unterschied nicht wirklich.

NUMERIC Wenn Sie es int machen möchten, geben Sie ein getNumericCellValue() Wenn Sie das Datum usw. in Datumstyp erhalten möchten getDateCellValue()

FORMULA getCellFormula() Ausdruck kann als String-Typ erhalten werden

ERROR getErrorCellValue() Als Fehlercode abrufen. (Byte)

BOOLEAN Es ist ein boolescher Typ und kann so wie er ist verwendet werden. getBooleanCellValue()

Es ist so.

Recommended Posts

Importieren Sie Excel-Daten mit Java 2
Importieren Sie Excel-Daten mit Java 3
Importieren Sie Excel-Daten mit Java
Java-Zusatz Excel-Datenüberprüfung
Firestore-Daten in RecyclerView [Java] anzeigen
Erstellen Sie Binärdaten variabler Länge in Java
Änderungen in Java 11
Janken in Java
Java erstellt ein Kreisdiagramm in Excel
Löschen Sie leere Zeilen / Spalten in Java Excel
Umfangsrate in Java
FizzBuzz in Java
Hinzufügen, Lesen und Löschen von Excel-Kommentaren mit Java
Organisiertes Memo im Kopf (Java - Datentyp)
Lesen Sie JSON in Java
Machen Sie einen Blackjack mit Java
Einschränkungsprogrammierung in Java
Setzen Sie Java8 in Centos7
NVL-artiger Typ in Java
Verbinden Sie Arrays in Java
"Hallo Welt" in Java
Aufrufbare Schnittstelle in Java
Kommentare in der Java-Quelle
[Java] Datentyp ①-Basistyp
Azure funktioniert in Java
Formatieren Sie XML in Java
Einfache HTML-Spezialchars in Java
Boyer-Moore-Implementierung in Java
Hallo Welt in Java
Verwenden Sie OpenCV mit Java
WebApi-Memorandum mit Java
Typbestimmung in Java
Befehle in Java ausführen (Ping)
Verschiedene Threads in Java
Implementierung der Heap-Sortierung (in Java)
Zabbix API in Java
ASCII-Kunst in Java
Listen in Java vergleichen
POST JSON in Java
Fehler in Java ausdrücken
[Java] Hauptdatentypen
Erstellen Sie JSON in Java
Datumsmanipulation in Java 8
Was ist neu in Java 8?
Verwenden Sie PreparedStatement in Java
Was ist neu in Java 9,10,11
Parallele Ausführung in Java
Java-Grunddatentypen
Vektorisieren und bildgeben Sie handgeschriebene numerische MNIST-Bilddaten mit Java
So erstellen Sie einen Daten-URI (base64) in Java
Versuchen Sie es mit RocksDB mit Java
Vermeiden Sie den Fehler, den Yuma in Java gemacht hat
Java-Lernnotiz (Datentyp)
Holen Sie sich EXIF-Informationen in Java
Holen Sie sich Wettervorhersagen von Watson Weather Company Data mit einfachem Java
Verwendung von JSON-Daten in der WebSocket-Kommunikation (Java, JavaScript)
Bearbeiten von ini in Java: ini4j