Как получить Excel DateTime в виде числа FLOAT, а не «datetime.datetime» в xlwings?

Мой код, как показано ниже, и файл text.xlsx выглядит так: скриншот файла text.xlsx ,

import xlwings as xw
import datetime

app = xw.App(visible=False,add_book=False)
file_path = r'D:	est.xlsx'
wb = app.books.open(file_path)
sht = wb.sheets[0]
cell = sht.range((1, 1)).value
print(cell)

wb.close()
app.quit()

В тестовом файле дата и время в «А1» - это (1895, 10, 24, 23, 2, 24) , который хранится в Excel как -1528,96 , но сейчас мне плевать на это время, я просто хочу получить номер Excel -1528.96 в моем коде, но это не удалось.

Печатное сообщение:

1895-10-24 23:02:24

Ожидаемое количество:

-1528.96

Также пробовал: https://stackoverflow.com/a/9574948/12525445 , но результат -1527.04

Большое спасибо за любую подсказку!

Всего 1 ответ

Автоматический диспенсер мыльной пены от xiaomi.


Канонический способ получения базового числа с плавающей точкой из даты Excel - вызвать свойство value2 . К сожалению, мы еще не реализовали это в xlwings, поэтому вам нужно перейти на pywin32, если вы используете Windows:

sht.range((1, 1)).api.Value2

Подробнее о том, как обрабатывать недостающие функции, читайте здесь: http://docs.xlwings.org/en/stable/missing_features.html

Синтаксис в Windows для .api - это на самом деле синтаксис pywin32, который, опять же, почти такой же, как официальный способ VBA. В вашем конкретном случае вы можете обратиться к официальным документам Microsoft для Value2: https://docs.microsoft.com/en-us/office/vba/api/excel.range.value2


Есть идеи?

10000