使用 openpyxl 将日期格式更改为 xlsx 中的文本
Changing date-format to text in xlsx using openpyxl
我写了一个脚本,它从 excel 个工作簿中读取并编写新的工作簿。
每行都是一个单独的对象,其中一列是日期。
我使用 datetime 将日期写为 NamedStyle 以获得我认为正确的格式:
date_style = NamedStyle(name='datetime', number_format='YYYY-MM-DD')
for row in range(2,ws_kont.max_row+1):
ws_kont.cell(row = row, column = 4).style = date_style
问题是我需要将此 excel 工作簿导入到一个古老的数据库中,该数据库出于某种原因不接受日期格式,只接受这样的文本 "yyyy-dd-mm"。
我无法将这些单元格重写为文本。
我试过使用 =TEXT 公式,但这行不通,因为您不能使用单元格本身来计算结果,除非我复制列以在公式中引用:
name = str(ws_teg.cell(row = row, column = 4).coordinate)
date_f = "yyyy-mm-dd"
ws_kont[name] = "=TEXT(%s,%s)" % (name, date_f)
我需要在几个脚本中的很多地方执行此操作,所以我想知道是否有更简单的方法来执行此操作?
PS。我只是一名考古学家,试图通过涉足一些简单的代码来自动化我工作日的一些任务,如果我看起来有点慢,请放轻松。
很可能,仅更改日期的 格式 是不够的 - 您必须将日期存储为字符串而不是日期时间对象。
遍历该列并使用 datetime.strftime
:
格式化日期
for row in range(1, ws_kont.max_row+1):
cell = ws_kont.cell(row = row, column = 4)
cell.value = cell.value.strftime('%Y-%m-%d')
发现另一篇用最少的代码运行良好的文章:
writer = pd.ExcelWriter('Sample_Master_Data_edited.xlsx', engine='xlsxwriter',
date_format='mm/dd/yyyy', datetime_format='mm/dd/yyyy')
我写了一个脚本,它从 excel 个工作簿中读取并编写新的工作簿。 每行都是一个单独的对象,其中一列是日期。 我使用 datetime 将日期写为 NamedStyle 以获得我认为正确的格式:
date_style = NamedStyle(name='datetime', number_format='YYYY-MM-DD')
for row in range(2,ws_kont.max_row+1):
ws_kont.cell(row = row, column = 4).style = date_style
问题是我需要将此 excel 工作簿导入到一个古老的数据库中,该数据库出于某种原因不接受日期格式,只接受这样的文本 "yyyy-dd-mm"。 我无法将这些单元格重写为文本。
我试过使用 =TEXT 公式,但这行不通,因为您不能使用单元格本身来计算结果,除非我复制列以在公式中引用:
name = str(ws_teg.cell(row = row, column = 4).coordinate)
date_f = "yyyy-mm-dd"
ws_kont[name] = "=TEXT(%s,%s)" % (name, date_f)
我需要在几个脚本中的很多地方执行此操作,所以我想知道是否有更简单的方法来执行此操作?
PS。我只是一名考古学家,试图通过涉足一些简单的代码来自动化我工作日的一些任务,如果我看起来有点慢,请放轻松。
很可能,仅更改日期的 格式 是不够的 - 您必须将日期存储为字符串而不是日期时间对象。
遍历该列并使用 datetime.strftime
:
for row in range(1, ws_kont.max_row+1):
cell = ws_kont.cell(row = row, column = 4)
cell.value = cell.value.strftime('%Y-%m-%d')
发现另一篇用最少的代码运行良好的文章:
writer = pd.ExcelWriter('Sample_Master_Data_edited.xlsx', engine='xlsxwriter',
date_format='mm/dd/yyyy', datetime_format='mm/dd/yyyy')