Python xlsx 到 csv,不将日期更改为整数
Python xlsx to csv without change date to interger
我需要编写一个 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
谢谢。
根据 xlrd document,我猜你必须自己进行转换,因为 excel.
中没有存储日期类型
正如文档所说,Excel for Windows stores dates by default as the number of days (or fraction thereof) since 1899-12-31T00:00:00
。 43203
的日期可以这样计算:
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)
我需要编写一个 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
谢谢。
根据 xlrd document,我猜你必须自己进行转换,因为 excel.
中没有存储日期类型正如文档所说,Excel for Windows stores dates by default as the number of days (or fraction thereof) since 1899-12-31T00:00:00
。 43203
的日期可以这样计算:
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)