Cela me pose de gros problèmes, car la fonction cell.value renvoie la formule utilisée pour la cellule et je dois extraire le résultat fourni par Excel après son utilisation.
Merci.
Ok, je pense avoir trouvé un moyen de le contourner; apparemment, pour accéder à cell.internal value, vous devez utiliser la méthode iter_rows () de votre feuille de calcul, qui est une liste de "RawCell".
for row in ws.iter_rows():
for cell in row:
print cell.internal_value
Comme Charlie Clark suggère déjà que vous pouvez définir data_only
sur True
lorsque vous chargez votre classeur:
from openpyxl import load_workbook
wb = load_workbook("file.xlsx", data_only=True)
sh = wb["Sheet_name"]
print(sh["x10"].value)
Bonne chance :)
D'après le code, il semble que vous utilisiez le lecteur optimisé: read_only=True
. Vous pouvez basculer entre l'extraction de la formule et son résultat à l'aide de la commande data_only=True
drapeau lorsque vous ouvrez le classeur.
internal_value
était un attribut privé qui se référait uniquement à la valeur (non typée) utilisée par Excel, c.-à-d. nombres avec une époque en 1900 pour les dates par opposition à la forme Python. Il a été retiré de la bibliothèque depuis la première demande de cette question.
Vous pouvez essayer de suivre le code.Il suffit de fournir le chemin du fichier Excel et l’emplacement de la cellule dont la valeur est nécessaire en termes de numéro de ligne et de numéro de colonne ci-dessous dans le code ci-dessous.
from openpyxl import Workbook
wb = Workbook()
Dest_filename = 'Excel_file_path'
ws=wb.active
print(ws.cell(row=row_number, column=column_number).value)
Essayez d'utiliser cell.internal_value
au lieu.