Home > Back-end >  xlwings cell value wrong
xlwings cell value wrong

Time:09-20

in excel I have a cell with the value 1:23.456 with the the format m:ss.000 (minute, seconds and milliseconds)

now I want to read the value with python xlwings and pandas:

import xlwings as xw
import pandas as pd

excelData = xw.Book(path)
data = pd.DataFrame(excelData.sheets[sheetName].used_range.value)
print(data[20][7])

but instead of 1:23.456 I get 0.000965925925925926 as the output.

How do I get the right number as the output? (1:23.456)

CodePudding user response:

I don't know of a simple, built-in way to do this. However, you can change the format once the data is in the DataFrame (I assume there will be a column of data that needs to be changed:

val = data[20][7] # Change this to the range of data you need to be altered.

(dt.datetime.min   dt.timedelta(val)).time().strftime("%M:%S.%f")

The number you are seeing is the ratio of the time to a full day.

The code above starts at the minimum time dt.datetime.min and adds on the time of your value dt.timedelta(val), then converts this to the format you want (but with 6 decimals). If you specifically want 3, you could follow the steps of this answer

  • Related