Importer des données Excel avec Java 2

Dans la continuité de la dernière fois, cette fois est également le contenu d'Apache POI.

À propos de l'obtention de la valeur de la cellule

À propos de la pièce qui a été décrite dans une autre méthode à propos de la pièce pour obtenir la valeur de la cellule précédente. Il semble que la valeur de la cellule ne soit pas simplement telle qu'elle est. Extrait de la méthode précédente telle quelle.

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;
    }
}

Ici, le type de cellule à acquérir (type de variable dans Java? State?) Est déterminé en premier. Il semble que la méthode utilisée pour l'acquisition change en fonction du type.

À propos du type de cellule

Vous pouvez obtenir le type de cellule avec la méthode getCellType. Plus précisément, il y a les sept suivants. ・ ** CellType._NONE ** Cellule inconnue. Je ne suis pas sûr, mais c'est une cellule qui apparaît rarement.

・ ** CellType.BLANK ** Cellule vide.

・ ** Type de cellule.BOOLEAN ** Booléen. Pour les cellules qui demandent VRAI, FAUX ou authenticité (comme "= A1 = A2").

・ ** CellType.ERROR ** Erreur. Peut-être qu'une erreur de calcul est une cellule qui contient une erreur dans la formule.

・ ** CellType.FORMULA ** Formule. Une cellule calculée comme "= A1 + B1" et affichée comme valeur calculée à l'écran. Puisque la formule elle-même peut être obtenue en utilisant la méthode getCellFormula, "= A1 + B1" peut être obtenu tel quel en le convertissant en String.

・ ** CellType.NUMERIC ** Valeur numérique. Une cellule qui contient des nombres ou des dates.

・ ** CellType.STRING ** Chaîne de caractères. Une cellule dont le contenu est du texte. Si vous avez utilisé des nombres comme chaînes sur Excel, les nombres viendront également ici. (Devrait)

Vérification

SamplePOI2.java



public class SamplePOI2 {

    /*
     *Ce processus
     */
    public static void main(String[] args) {
        //Entrez ici le chemin complet du fichier Excel que vous souhaitez importer
        String ExcelPath = "";

        //Objets pour Excel
        Workbook wb;
        Sheet sh;
        Row row;
        Cell cell;

        //Liste contenant les données acquises
        List<String> columnA_List = new ArrayList<>();

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

            //Importez le fichier Excel cible dans Java
            wb = WorkbookFactory.create(is);
            //Spécifiez la première feuille du fichier cible
            sh = wb.getSheetAt(0);
            //Obtenez la ligne maximale de la feuille
            int rowMaxA = sh.getLastRowNum();

            //Tournez la boucle pour la ligne maximale et obtenez la cellule de la colonne A en tant que type String
            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);
            }

            //Sortie vers la console

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

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

    /*
     *Détermine l'état de la cellule et le renvoie sous forme de type String.
     */
    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 Le résultat du chargement de cet Excel est

cellType.result


BLANK
BOOLEAN
ERROR
FORMULA
NUMERIC
STRING

est devenu.

À propos de l'acquisition

Une fois que vous connaissez le type de cellule, obtenez la valeur de chaque type de cellule. STRING getStringCellValue() Ou cell.getRichStringCellValue().getString() Obtenu à. Je ne comprends pas vraiment la différence.

NUMERIC Si vous voulez le rendre de type int getNumericCellValue() Si vous souhaitez obtenir la date, etc. dans le type de date getDateCellValue()

FORMULA getCellFormula() L'expression peut être obtenue en tant que type String

ERROR getErrorCellValue() Obtenez un code d'erreur. (octet)

BOOLEAN C'est un type booléen et peut être utilisé tel quel. getBooleanCellValue()

C'est comme ça.

Recommended Posts

Importer des données Excel avec Java 2
Importer des données Excel avec Java 3
Importer des données Excel avec Java
Vérification des données Excel d'ajout Java
Afficher les données Firestore dans RecyclerView [Java]
Créer des données binaires de longueur variable en Java
Changements dans Java 11
Janken à Java
Java crée un graphique circulaire dans Excel
Supprimer les lignes / colonnes vides dans Java Excel
Taux circonférentiel à Java
FizzBuzz en Java
Ajouter, lire et supprimer des commentaires Excel à l'aide de Java
Mémo organisé dans la tête (Java - type de données)
Lire JSON en Java
Faites un blackjack avec Java
Programmation par contraintes en Java
Mettez java8 dans centos7
NVL-ish guy en Java
Joindre des tableaux en Java
"Hello World" en Java
Interface appelable en Java
Commentaires dans la source Java
[Java] Type de données ①-Type de base
Fonctions Azure en Java
Formater XML en Java
Simple htmlspecialchars en Java
Implémentation Boyer-Moore en Java
Hello World en Java
Utiliser OpenCV avec Java
Mémorandum WebApi avec Java
Détermination de type en Java
Exécuter des commandes en Java (ping)
Divers threads en java
Implémentation du tri de tas (en java)
API Zabbix en Java
Art ASCII à Java
Comparer des listes en Java
POST JSON en Java
Exprimer l'échec en Java
[Java] Principaux types de données
Créer JSON en Java
Manipulation de la date dans Java 8
Nouveautés de Java 8
Utiliser PreparedStatement en Java
Nouveautés de Java 9,10,11
Exécution parallèle en Java
Types de données de base Java
Vectoriser et imager les données d'images numériques manuscrites MNIST avec Java
Comment créer un URI de données (base64) en Java
Essayez d'utiliser RocksDB avec Java
Évitez l'erreur que Yuma a donnée en Java
Mémo d'apprentissage Java (type de données)
Obtenir des informations EXIF en Java
Obtenez les prévisions météorologiques de Watson Weather Company Data avec Java simple
Comment utiliser les données JSON dans la communication WebSocket (Java, JavaScript)
Modifier ini en Java: ini4j