将整数(通过xlrd读取)转换回日期格式(使用openpyxl写入)

3 投票
2 回答
2244 浏览
提问于 2025-04-18 16:46

我正在用xlrd这个工具来读取文件里的日期,然后用openpyxl把这些日期写到一个新的工作簿里。

如果日期是25-jun-14,它会写成41815。

我只是想知道怎么把41815再转换回25-jun-14,或者25/06/14,但我今天看到的资料都太复杂了,让我很困惑。

2 个回答

0

我猜originReport.cell_value(0,0)的值是'25-jun-14'

from datetime import datetime
import re

a = '25-jun-14'
b = re.sub('-14', '-2014', a)

c = datetime.strptime(b, "%d-%b-%Y")

# write 25/06/2014
destReport.cell(row=1,column=1).value = c.strftime("%d/%m/%Y")

我觉得你应该写2014,而不是14。否则,你怎么知道这个14代表的是哪一年呢?

1

使用openpyxl,你可以直接在文件里进行修改。

不过,转换其实很简单:Excel把日期当成数字来处理(从1900年1月1日开始算),这些数字被格式化成日期。所以你只需要设置单元格的格式就可以了。

originReport = xlrd.open_workbook('report1').sheet_by_index(0)
destReport = openpyxl.load_workbook('report2')[0]
c = destReport.cell(row=1,column=1)
c.value = originReport.cell_value(0,0)
c.number_format = "d-mmm-yy" # Excel's formatting
# check the conversion
print(c.value)
2014-06-25 00:00:00

撰写回答