web-dev-qa-db-fra.com

Comment accéder à la valeur réelle d’une cellule en utilisant le module openpyxl pour python

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
35
user3455972

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 :)

68
Iulian Stana

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.

26
Charlie Clark

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)
6
Rohit Gawas

Essayez d'utiliser cell.internal_value au lieu.

4
Vitaly Isaev