Python xlsx到csv没有更改日期到interger

时间:2017-12-19 03:37:03

标签: python csv datetime xlsx

我需要编写一个python脚本来从.xlsx文件更改为.csv文件: 我的代码:

import xlrd
import csv

def csv_from_excel():

    wb = xlrd.open_workbook("Book1.xlsx")
    sh = wb.sheet_by_name('Att1FF5.tmp')
    your_csv_file = open('your_csv_file.csv', 'wb')
    wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)

    for rownum in xrange(sh.nrows):
        wr.writerow([unicode(entry).encode("utf-8") for entry in sh.row_values(rownum)])

    your_csv_file.close()

csv_from_excel()

但是,所有日期格式都更改为整数。例如:

4/13/2018 - > 43203

无论如何,我可以改变我的代码以保持日期格式。我的日期格式被认为是MM / DD / YYYY

感谢。

1 个答案:

答案 0 :(得分:0)

根据xlrd document,我猜你必须自己进行转换,因为excel中没有存储日期类型。

正如文件所说,Excel for Windows stores dates by default as the number of days (or fraction thereof) since 1899-12-31T00:00:0043203的日期可以这样计算:

import datetime, xlrd

xlrd.xldate.xldate_as_tuple(43203, 0)  # returns (2018, 4, 13, 0, 0, 0)
xlrd.xldate.xldate_as_datetime(43203, 0)  # returns datetime.datetime(2018, 4, 13, 0, 0)