我编写了一个从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。我只是一名考古学家,试图通过一些简单的代码尝试在我的工作日自动执行某些任务,如果我看起来有点慢,请放轻松。
答案 0 :(得分:2)
找到另一篇很好的用最少的代码写的文章:
writer = pd.ExcelWriter('Sample_Master_Data_edited.xlsx', engine='xlsxwriter',
date_format='mm/dd/yyyy', datetime_format='mm/dd/yyyy')
答案 1 :(得分:1)
最有可能的是,它不足以改变您日期的格式 - 您必须将日期存储为字符串而不是日期时间对象。
循环显示列并使用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')