我在使用python从excel表读取日期和时间时遇到了麻烦

时间:2017-06-07 18:55:35

标签: python excel xlrd xlwt

gunicorn mirador_django.wsgi:application \
  --bind 0.0.0.0:8000 \
  --workers 4

我得到输出为
42753.61492
42753.61492
42753.61492
42753.61492
42753.61492

我正在寻找这样的东西                         2017-01-18 14:45:29 a 2017-01-18 14:45:29 a 2017-01-18 14:45:29 a 2017-01-18 14:45:29 a 2017-01-20 09:10:06一个

3 个答案:

答案 0 :(得分:2)

您只需在编写输出工作簿时设置数字格式,就像在Excel中一样。这是通过在outsheet.write()电话上添加其他参数来完成的。

不幸的是,xlwt的“官方”文档很难使用。更好的是old tutorial PDF。在那里你应该阅读风格(XFStyle和easyxf)。

或者更好的是完全抛弃xlwt并切换到XlsxWriter,它更易于使用,具有更多功能,具有vastly better documentation,可以主动维护,并生成当前的.xlsx文件,而不是过时的.xls文件。

答案 1 :(得分:0)

>>> import datetime
>>> datetime.datetime(1899,12,30) + datetime.timedelta(days=42753.61492)
datetime.datetime(2017, 1, 18, 14, 45, 29, 88000)

答案 2 :(得分:0)

你可以试试这个:

from datetime import datetime
import xlwt
import xlrd, xlutils

wb = xlwt.Workbook()
outsheet = wb.add_sheet('Page 1')

files = [r'c:\file1', r'C:c:\file2',]

outrow = 0


for f in files:

insheet = xlrd.open_workbook(f,formatting_info=True).sheets()[0]
for row in range(insheet.nrows):
    for col in range(insheet.ncols):
        outsheet.write(outrow, col,datetime.fromtimestamp(float(insheet.cell_value(row, col))))
    outrow += 1
wb.save(r'C:\combined.xls')