[Python] La valeur écrite par Openpyxl est affichée sous forme d'exposant (E).

Problèmes survenus

La valeur écrite par la bibliothèque Python openpyxl est affichée dans le format d'affichage exponentiel en utilisant E.

sample_code.py


import openpyxl

wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']

sh.cell(row=1, column=1).value = 308985489249593041

wb.save('./result.xlsx')

résultat image.png Même si l'affichage est fait avec la fonction exponentielle supprimée, certaines des fins sont remplacées par des 0, ce qui pose problème.

Cause

Problèmes avec les spécifications d'Excel au lieu d'Openpyxl

Si vous entrez plus de 15 chiffres dans une cellule Excel, tous les nombres de plus de 15 seront remplacés par 0.

[La saisie d'un nombre long dans une cellule Excel modifie le dernier nombre à 0](https://docs.microsoft.com/en-us/office/troubleshoot/excel/last-digits-changed-to- à partir de zéros)

Dans le cas du calcul numérique, cela ne semble pas poser de problème si la précision est légèrement réduite si le nombre de chiffres est d'autant. C'est un problème si vous écrivez quelque chose comme un identifiant, un numéro cleca ou même un seul chiffre.

Solution

Écrivez simplement un nombre sous forme de chaîne de caractères

sample_code.py


import openpyxl

wb = openpyxl.open('./Book1.xlsx')
sh = wb['Sheet1']

#Je vais faire en sorte que la valeur numérique soit écrite ici de type str
sh.cell(row=1, column=1).value = str(308985489249593041)

wb.save('./result.xlsx')

image.png Je suis en colère parce que c'est une chaîne ou un nombre qui commence par une apostrophie, mais je pourrais l'écrire À propos, le calcul dans Excel peut être effectué normalement même si cette erreur se produit.

Comment puis-je obtenir la valeur écrite sous forme de chaîne de caractères dans openpyxl?

sample_code.py


import openpyxl

wb = openpyxl.open('./result.xlsx')
sh = wb['Sheet1']

A1_value = sh.cell(row=1, column=1).value
print(A1_value)
print(type(A1_value))

'''
> 308985489249593041
> <class 'str'>

Il semble être acquis sous forme de chaîne de caractères Je dois le remplacer à nouveau par int

Postscript: je préciserai le format

Les articles suivants ont été introduits dans les commentaires. Spécifiez le format d'affichage des nombres avec openpyxl

Voilà pourquoi J'ai passé quelques formats à sh.cell (row =, colum =). Number_format =. Le nombre à écrire est le même que ci-dessus 308985489249593041 image.png Dans le format donné par la colonne A, la colonne B est le résultat Oh, c'est incroyable. Le format a changé correctement. Mais malheureusement, la fin peut être changée en 0 ... C'est un format B2 ou chaîne de caractères, mais cela semble impossible si c'est un type int au moment de l'écriture ...

Épilogue

Existe-t-il une solution de contournement plus intelligente? Vous pouvez libérer la limite supérieure avec un plug-in Excel Si vous savez, faites-le moi savoir

Recommended Posts

[Python] La valeur écrite par Openpyxl est affichée sous forme d'exposant (E).
Que faire lorsque le type de valeur est ambigu en Python?
Où est écrit le processus d'instanciation python?
Qu'est-ce que "mahjong" dans la bibliothèque Python? ??
La date n'est pas affichée correctement dans matplotlib.
Qu'est-ce que wheezy dans l'image Docker Python?
À propos de la différence entre "==" et "is" en python
Découvrez la fraction de la valeur saisie en python
Convertir un float exponentiel en str en Python
Même si le langage de développement est changé en python3 dans Cloud9, la version 2 est affichée en python --version
Vérifiez si la chaîne est un nombre en python
Comprenez attentivement la distribution exponentielle et dessinez en Python
Quel est l'attribut de domaine écrit dans la disposition de Plotly?
Trouvez la partie 575 de Wikipedia en Python
Obtenez la valeur sélectionnée dans le menu déroulant Selenium Python VBA
Que faire si la barre de progression n'est pas affichée dans tqdm de python
Notation de classe en Python
Je veux initialiser si la valeur est vide (python)
Test.py n'est pas reflété sur le serveur Web dans Python3.
Comparaison du code de moyenne mobile exponentielle (EMA) écrit en Python
Obtenez la valeur tout en spécifiant la valeur par défaut de dict en Python
L'image en échelle de gris est affichée sous forme d'image couleur dans OpenCV / Python
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Obtenez automatiquement le port où Arduino est bloqué en Python
Lorsque "Aucune modification détectée" s'affiche dans python3 manage.py makemigrations
Trouver des erreurs en Python
Calcul de la valeur de jeu de cisaillement en Python
Résoudre ABC176 E en Python
Convertir la notation CIDR en Python
Gacha écrit en Python -BOX Gacha-
Dans le dictionnaire python, si une clé inexistante est accédée, initialisez-la avec une valeur arbitraire
Une raison simple pour laquelle la valeur de retour de round (2.675,2) est de 2,67 en python (elle devrait être de 2,68 en réalité ...)
Comment est le progrès? Continuons le boom ?? en Python
Jouez des sons en Python en supposant que le clavier est un clavier de piano
Soyez prudent lorsque vous spécifiez la valeur d'argument par défaut dans la série Python 3
[Python] Temps d'exécution lorsqu'une fonction est saisie dans une valeur de dictionnaire
Supprimer un caractère spécifique en Python s'il s'agit du dernier
Comment utiliser l'astérisque (*) en Python. C'est peut-être tout? ..
Résolvez la plus petite valeur en Python (équivalent au rang D de paiza)
Convertir un script Python écrit dans PyTorch en exe avec PyInstaller
Cool Lisp écrit en Python: Hy
Obtenir l'API arXiv en Python
[Python] Trouvez la deuxième plus petite valeur.
Notation inclusive dans l'argument de la fonction Python
Utilisez le tissu tel quel en python (fabric3)
Python dans le navigateur: la recommandation de Brython
Frappez l'API Sesami en Python
Python est UnicodeEncodeError dans le menu fixe CodeBox
Obtenez le chemin du bureau en Python
[Python] Qu'est-ce que @? (À propos des décorateurs)
Obtenez le chemin du script en Python
Dans la commande python, python pointe vers python3.8
Implémenter le modèle Singleton en Python
Programme de diagnostic de compatibilité écrit en python
[python] Quelle est la clé triée?
Changer la langue affichée dans Django 1.9
Accédez à l'API Web en Python
Il n'y a pas de commutateur en python
J'ai écrit la file d'attente en Python