300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > python读取excel日期和时间数据_python 在excel文件中写入date日期数据 以及读取exc

python读取excel日期和时间数据_python 在excel文件中写入date日期数据 以及读取exc

时间:2020-10-05 14:20:51

相关推荐

python读取excel日期和时间数据_python 在excel文件中写入date日期数据 以及读取exc

如何通过python写入date数据了?

写入还是很简单的。

import xlwt3

import datetime as dt

workbook = xlwt.Workbook()

worksheet = workbook.add_sheet('Sheet1')

worksheet.write(0, 0, dt.date.today())

workbook.save('test.xls')

查看一下,确实写入了,但变成了一个数字。怎么回事了,原来excel保存日期采用的是float类型保存。

查看worksheet.write:

Help on method write in module xlwt3.worksheet:

write(self, r, c, label=b'', style=) method of xlwt3

.worksheet.Worksheet instance

太简单了,label是什么?

只能查看源码了:

def write(self, r, c, label=b"", style=style.default_style):

self.row(r).write(c, label, style)

继续挖掘:

def write(self, col, label, style=style.default_style):

self.__adjust_height(style)

self.__adjust_bound_col_idx(col)

style_index = self.__parent_wb.add_style(style)

if isinstance(label, str):

if len(label) > 0:

self.insert_cell(col,

StrCell(self.__idx, col, style_index, self.__parent_wb.add_str(label))

)

else:

self.insert_cell(col, BlankCell(self.__idx, col, style_index))

elif isinstance(label, bool): # bool is subclass of int; test bool first

self.insert_cell(col, BooleanCell(self.__idx, col, style_index, label))

elif isinstance(label, (float, int, Decimal)):

self.insert_cell(col, NumberCell(self.__idx, col, style_index, label))

elif isinstance(label, (dt.datetime, dt.date, dt.time)):

date_number = self.__excel_date_dt(label)

self.insert_cell(col, NumberCell(self.__idx, col, style_index, date_number))

elif label is None:

self.insert_cell(col, BlankCell(self.__idx, col, style_index))

elif isinstance(label, formula.Formula):

self.__parent_wb.add_sheet_reference(label)

self.insert_cell(col, FormulaCell(self.__idx, col, style_index, label))

else:

raise Exception("Unexpected data type %r" % type(label))

原来:

elif isinstance(label, (dt.datetime, dt.date, dt.time)):

date_number = self.__excel_date_dt(label)

self.insert_cell(col, NumberCell(self.__idx, col, style_index, date_number))

label的数值,会先进行判断,然后进行处理。

这样,只需要设置一下style就可以了!

dateFormat = xlwt.XFStyle()

dateFormat.num_format_str = 'yyyy/mm/dd'

worksheet.write(0, 0, dt.date.today(),dateFormat)

workbook.save('test.xls')

搞定。

注意一下:

python的date 和excel的date是不一样的。

实验一下:

dt.date.today().toordinal()##/6/19

735768

读取一下excel的数值了?

import xlrd

worksheetRead= xlrd.open_workbook('test.xls')

sheetRead=Rd.sheet_by_index(0)

sheetRead.cell(0,0).value

42174

差别真不小!!

WHY?

原来:python是从公元1年1月1日开始的天数转换 的!

excel是从1899年12月 31号开始的。

做一个函数转换一下即可:

__s_date = dt.date (1899, 12, 31).toordinal() - 1

def getdate(date ):

if isinstance(date , float ):

date = int(date )

d = dt.date .fromordinal(__s_date + date )

return d

ok,over!!

python读取excel日期和时间数据_python 在excel文件中写入date日期数据 以及读取excel日期数据 如何在python中正确显示date日期。...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。