在 Python 和 openpyxl 中使用小时和分钟数 - Excel Formatting vs String & Ints



希望具有一些openpyxl或一般Excel经验的人能够提供帮助。 我正在做一个记录飞行时间的项目,并制作一个一个月内完成的航班的Excel电子表格。

到目前为止,我已经使用 PySimpleGUI 创建了一个漂亮的前端,并让它工作,以便它将每个航班的详细信息存储为字典,其中键是机组人员姓名、飞机注册等术语。 每个航班都单独存储在当月的字典中。

为了确保飞行时间有意义,我使用了数字微调器,这样他们就不会得到无意义的输入。每种类型的飞行小时记录为 2 个键,一个用于小时,一个用于分钟。因此,字典有一个部分包含以下部分:

'-firstPilotHours-': 1,
'-firstPilotMins-': 30,
'-captainHours-': 1,
'-captainMins-': 30,

.. 等等。 我设法将它们转换为字符串并在中间用冒号连接起来,将它们放入 Excel 中:

ws1.cell(row=sortieIdent, column=9).value = str(currentMonth[sortie]["-captainHours-"]) + ":" + str(currentMonth[sortie]["-captainMins"])

。所以它在 Excel 中显示为"1:30",这是我为此目的运行手动 Excel 文件时输入数据的方式。

单元格的数字格式设置为"[h]:mm",以允许我对小时和分钟等值执行计算,因此可以显示每月总计等。

然而,这就是我卡住的地方。我想因为我将它们转换为字符串,即使它们在 Excel 中看起来像"1:30",它们在 Excel 中也像字符串而不是整数一样处理。无法使用它们执行任何计算。 如果我在 Excel 中使用"1:30"过度键入它们,则它们将移动到列的右侧并开始表现得像数字。

我想不出任何方法可以将它们放入Excel中,以便对它们进行计算。谁能帮忙?

我曾考虑过为小时和分钟设置单独的列,但我也不知道如何以这种方式进行计算。我还考虑过将它们显示为字符串,就像现在一样,但在 Python 中进行计算;但是我不知道如何在Python中进行正确的"小时和分钟"计算。

希望这能让您深入了解Excel的日期/时间处理。

对于表示日期/时间的给定十进制数... 小数点的左侧表示自 1900 年 1 月 0 日以来的天数。 十进制数的右侧表示时间。

实际示例:

我写这篇文章的日期是: 24 五月 2020 @ 8:02pm

Excel 的基础值为:43975.8347222222

自 1900 年 1 月 0 日以来的 43975 天 = 2020 年 5 月 24 日

.8347222222 = 24 小时的小数部分

有了这个基础(如果不清楚,请告诉我(。 现在我们可以处理您的示例。

将 1:30 表达到 Excel 的世界。 我们需要将 1 小时 30 分钟转换为十进制日

您的 1:30 = .0625 在 Excel 中

要显示.0625,您可以使用自定义格式将单元格格式化为"hh:mm"或任何您想要的格式。

自定义格式 = 向用户显示值 .0625 = Excel 用于计算的基础值

希望这能推动你走得更远。

最新更新