【问题标题】:Python xlsx to csv without change date to intergerPython xlsx 到 csv 而不将日期更改为整数
【发布时间】:2018-06-01 10:59:51
【问题描述】:

我需要编写一个 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()

然而,所有的日期格式都变成了整数。例如:

2018 年 4 月 13 日 --> 43203

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

谢谢。

【问题讨论】:

  • Excel 为您格式化值。您确定原始 XLSX 数据实际上有日期吗?
  • 为什么不使用pandas 而不是csv,并解析为日期?

标签: python csv datetime xlsx


【解决方案1】:

根据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)

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多