Python: как импортировать отображаемое (отформатированное) значение ячейки Excel вместо реального значения - PullRequest
0 голосов
/ 05 марта 2020

Например, ячейка имеет реальное значение 1.96. Ячейка отформатирована с округлением, поэтому в Excel отображается 2. Другой пример, ячейка имеет значение 5, но она отформатирована для отображения валюты, поэтому $5. Там может быть любой тип форматирования. Поэтому я не могу заранее знать, какое форматирование я ищу.

Как импортировать эти отображаемые значения с помощью Python? Я изучил Pandas и openpyxl, но не смог найти способ.

Я могу сделать это полу-вручную, создав собственный модуль VBA. следующий ответ Дункана О'Доннелла (последний) здесь: https://superuser.com/questions/678934/how-can-i-get-the-displayed-value-of-a-cell-in-ms-excel-for-text-that-was-conv

Но мне нужно полностью автоматизировать и сделать это в Python. Любая помощь приветствуется, спасибо!

Ответы [ 2 ]

1 голос
/ 05 марта 2020

Openpyxl имеет функцию под названием number_format , которая может пригодиться. Я в основном играл с выводом dir , чтобы добраться до этого.

 #let's say we have a value in cell C2 which is 1.96 but formatted to 2.0
 print(ws['C2'].number_format)

 #   #

Знак # указывает, что он отформатирован как целое число.

# Create a conditional:

if fmt=="#":
    r = round(ws['C2'].value)
print(r)

2.0

Это что-то вроде хака, но это должно помочь в вашем случае использования.

Что касается доллара, я отсылаю вас к этому сообщению о переполнении стека , так как я считаю, что оно довольно хорошо отражает ваш сценарий использования.

0 голосов
/ 06 марта 2020

Я смог решить эту проблему с помощью VBA ... так что я думаю, что нет простого способа с Python в конце концов.

...