首页 > 解决方案 > 更改列 openpyxl 的日期格式

问题描述

在 U 列中是格式为 的日期列表2020-01-21 09:50:10.959355-05:00。我正在尝试将所有 U 转换为mm/dd/yy格式。我收到ValueError: Style Normal exists already. 我也一直在研究仅通过yy hh. 哪个答案是最简单的。这是我的代码。请帮忙

date_style = NamedStyle(number_format='dd/mm/yy')
for row in sheet1.iter_rows(min_col=21, max_col=21):
    for cell in row:
        cell.style = date_style

标签: pythondatetimeopenpyxl

解决方案


根据您的要求,这是使用样式的正确方法:

from openpyxl.styles import NamedStyle
date_style = NamedStyle(name='date_style',number_format='dd/mm/yy')
wb.add_named_style(date_style)
for row in ws8.iter_rows(min_col=21, max_col=21):
    for cell in row:
        cell.style = date_style

分割空间是另一种方法:

import datetime
for row in ws.iter_rows(min_col=21, max_col=21):
    for cell in row:
        cell.value = datetime.datetime.strptime(cell.value.split()[0], '%Y-%m-%d').strftime('%m/%d/%y')

单元格的值将在空白处拆分为两个值,一个位于索引 0 处,另一个位于索引 1 处。您想要日期部分,因此您将选择[0]. 然后使用datetime库,您可以根据需要重新格式化日期。

输入:

2020-01-21 09:50:10.959355-05:00

输出:

01/21/20

推荐阅读