Importer des données Excel avec Java 3

Encore une fois, c'est Apache POI, une continuation de la dernière fois. https://qiita.com/Mk-4000/items/5d52b4b92ed5f8bf23f5

Contenu de cette époque

La dernière fois que j'ai écrit comment obtenir chaque type de cellule, ** CellType.FORMULA ** Méthode au moment de getCellFormula() Ensuite, j'ai trouvé que la formule elle-même dans la cellule peut être obtenue en tant que type String. Alors que faire si vous voulez le résultat de cette formule? Que faire quand vous dites.

Que faire spécifiquement

J'ai cherché quelque chose que je ne pouvais pas faire de différentes manières et je me suis référé à cet article. http://shin-kawara.seesaa.net/article/159878953.html

** Interface de Formula Evaluator ** Il y avait quelque chose qui s'appelait.

Cela évalue la cellule de formule. Faites-en une valeur. En bref, cela aide beaucoup à obtenir la valeur calculée.

Aussi, ** Interface CreationHelper ** Il semble utiliser aussi. C'est un objet qui gère l'instanciation de classes concrètes. Je pense que c'est celui qui crée divers objets POI.

Préparez ces deux,

  1. Préparez CreationHelper à partir de l'objet Workbook (getCreationHelper ())
  2. Créez FormulaEvaluator via CreationHelper (createFormulaEvaluator ())
  3. Calculez la cellule cible à l'aide de FormulaEvaluator.evaluateInCell ()

C'est un flux comme.

FormulaEvaluator.evaluateInCell(cell) Une méthode qui place une cellule dans l'argument, évalue et calcule la formule de la cellule incluse dans l'argument et renvoie le résultat

Si vous l'utilisez, vous pouvez obtenir la valeur calculée même avec une formule.

Résultat de la mise en œuvre

SamplePOI3.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:

            //Obtenir le résultat de la fonction
            Workbook wb = cell.getSheet().getWorkbook();
            CreationHelper ch = wb.getCreationHelper();
            FormulaEvaluator fe = ch.createFormulaEvaluator();
            retStr = String.valueOf(getCellStringValue(fe.evaluateInCell(cell)));

            break;
        case ERROR:
            retStr = String.valueOf(cell.getErrorCellValue());
            break;
        default:
            retStr = "";
            break;
        }
        return retStr;
    }

image.png

samplePOI3.result


1.0
2.0
3.0

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
Créer des données binaires de longueur variable en Java
Partition 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
Implémentation de l'interpréteur par Java
Faites un blackjack avec Java
Application Janken en Java
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
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
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
Lire des fichiers binaires en Java 1
É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
[Neta] Sleep Sort en Java
Obtenez les prévisions météorologiques de Watson Weather Company Data avec Java simple
Modifier ini en Java: ini4j
L'histoire de Java dans ce monde