Итак, теперь у меня есть функция Excel2CSV, но столкнулась с другой проблемой, в которой поля даты в моем файле Excel ('Date Opened', 'Date Closed'), которые отформатированы как Date в Excel записываются как целочисленное значение при преобразовании в CSV (пример 5/1/1995 преобразуется в 34820).Преобразование Excel в CSV - правильное преобразование полей даты
Я хотел бы, чтобы это просто написать эти даты в качестве обычного текста (то есть. 5/1/1995 -или- 1 мая 1995, или что-то вдоль этих линий. Что-то удобочитаемое.)
def Excel2CSV(ExcelFile, SheetName, CSVFile):
import xlrd
import csv
print "Acquiring " + ExcelFile + "..."
workbook = xlrd.open_workbook(ExcelFile)
print "Locating " + SheetName + " Worksheet..."
worksheet = workbook.sheet_by_name(SheetName)
print "Creating " + CSVFile + "..."
csvfile = open(CSVFile, 'wb')
print "Preparing to write CSV file..."
wr = csv.writer(csvfile, quoting=csv.QUOTE_ALL)
print "Writing CSV..."
for rownum in xrange(worksheet.nrows):
wr.writerow(
list(x.encode('utf-8') if type(x) == type(u'') else x
for x in worksheet.row_values(rownum)))
print "Closing CSV File..."
csvfile.close()
print "CSV successfully written."
return CSVFile
Я не уверен, как фиксировать поля даты по имени или значению, а затем правильно преобразовывать значения в обычный текст. Любая помощь приветствуется.
Уверен, что это всегда правильно? [http://www.cpearson.com/excel/datetime.htm](http://www.cpearson.com/excel/datetime.htm) указывает, что вам также необходимо вычесть 1 день для дат после '1900-фев- 28', по крайней мере, и может быть и дробная часть. –
@ivan_pozdeev да, это правда. Если вам небезразличны даты, которые вы, вероятно, не должны обрабатывать в Excel, тем не менее, я не чувствовал необходимости указывать на это. –
@ivan_pozdeev параметры 'days' обрабатывают float, так что дробные части тоже в порядке. –