openpyxl-格式列仅适用于日期

时间:2019-11-26 16:18:21

标签: python excel openpyxl

使用openpyxl2.6.1

关于尝试格式化列,这里有许多未解决的线程。我知道您目前无法格式化整个列...仅单个单元格?不过,我似乎甚至无法做到这一点。我正在尝试将列格式设置为'mm/dd/yyyy'。我也知道NumberFormat()已被删除。我上次尝试的结果是“有效”(这是我第一次运行并发布到excel电子表格中的代码)是下面的代码...但是它不格式化该列,我在单元格中得到的结果B2TRUE。我在这里想念什么?

from openpyxl.styles import is_date_format, numbers

s = numbers.is_date_format('mm/dd/yy')
daily_runs_ws['B2'] = s

例如,当前单元格格式(不尝试对其进行编辑)为11/14/2019 12:00:00 AM

3 个答案:

答案 0 :(得分:3)

这对我有用。 Openpyxl允许日期时间。所以,我建议这样:

import datetime
import openpyxl

dttm = datetime.datetime.strptime("09-12-2018", "%m/%d/%Y")
print(dttm)
cell = ws['A1']
cell.value = value
cell.number_format = 'YYYY MMM DD'

格式化单元格的方法是使用.number_format = "format"

答案 1 :(得分:1)

是的,目前您不能仅使用openpyxl将整个列格式化为日期,但是可以通过以下方式格式化文档中的任何单元格(包括列中所有已写入的单元格):

import openpyxl

document = openpyxl.load_workbook("document.xlsx")  # Opens excel document
sheet = document.active  # Sets active sheet

# To format all written cells in a column (Ex. column "B")
for cell in sheet["B"]:
    cell.number_format = "DD/MM/YYYY"

请注意,仅格式化已写入列中的单元格非常重要,最后一个写入单元格之后的所有其他空白单元格(不适用于空白单元格除非事先格式化,否则将保持“常规”格式。

答案 2 :(得分:0)

numbers.is_date_format是openpyxl用于确定数字格式是否用于日期和时间的函数。使用它的方式将返回True并将B2的值设置为True。可能不是您想要的。

我建议您阅读openpyxl文档中涉及样式的部分。那应该回答你的问题。

相关问题