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

2024-09-24 22:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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,insheet.cell_value(row, col))
    outrow += 1
wb.save(r'C:\combined.xls')

我得到的输出是
42753.61492英镑
42753.61492英镑
42753.61492英镑
42753.61492英镑
42753.61492美元

我看到的是这样的东西
2017-01-18上午14:45:29
2017-01-18上午14:45:29
2017-01-18上午14:45:29
2017-01-18上午14:45:29
2017-01-20 09:10:06甲


Tags: inimportforrangecolfilesrowworkbook
3条回答

您只需要在编写输出工作簿时设置数字格式,就像在Excel中一样。这是通过在outsheet.write()调用中包含另一个参数来实现的。你知道吗

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

或者更好的方法是完全抛弃xlwt并切换到XlsxWriter,它更易于使用,有更多的特性,有vastly better documentation,是主动维护的,并且生成当前的.xlsx文件而不是过时的.xls文件。你知道吗

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

你能试试这个吗:

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')

相关问题 更多 >