Я создаю инструмент для импорта файла .txt и экспорта его как файла .xslx с помощью pd.ExcelWriter. Для импорта я использую pd.read_csv
, который отлично работает. Экспорт фрейма данных в формате .xslx также отлично работает, за исключением того, что время не распознается Excel:
csv_file = pd.read_csv(ex_name,sep=';',skip_blank_lines=False,index_col=False,header=None,usecols=[0,1,2,3,4,5,6,7,8,9])
writer = pd.ExcelWriter('output.xlsx',
engine='xlsxwriter',
options={'strings_to_numbers': True},
datetime_format='yyyy-mm-dd hh:mm')
csv_file.to_excel(writer,sheet_name='Sheet1',index=False,header=False)
writer.save()
Поэтому я добавил несколько строк перед writer.save (), чтобы изменить формат:
workbook = writer.book
worksheet = writer.sheets['Sheet1']
formatdict = {'num_format':'yyyy-mm-dd hh:mm'}
fmt = workbook.add_format(formatdict)
worksheet.write_datetime('C6:C{0}'.format(int(len(date_export)+5)),date_export),fmt)
Где csv_file
- импортированный файл .txt, date_export
- серия дат, которую я пытался перезаписать. Но у меня ошибка типа: Unknown or unsupported datetime type
Я также попытался добавить новый диапазон дат, созданный с помощью pd.date_range
:
daterange = pd.date_range(start=date_export[0], periods=len(date_export),
freq='D', normalize=True)
С dtype='datetime64[ns]
, но у меня такая же ошибка.
Таким образом, экспорт с использованием pd.ExcelWriter
работает (при использовании только первого блока кода), но Excel распознает, что datetime не работает из-за ошибки в консоли python.
ПОЛНАЯ ОШИБКА
Traceback (most recent call last):
File "D:\txt_to_excel.py", line 399, in <module>
worksheet.write_datetime('C6:C{0}'.format(int(len(daterange)+5)),daterange)#,fmt)
File "C:\ProgramData\Anaconda3\lib\site-packages\xlsxwriter\worksheet.py", line 69, in cell_wrapper
return method(self, *args, **kwargs)
File "C:\ProgramData\Anaconda3\lib\site-packages\xlsxwriter\worksheet.py", line 770, in write_datetime
return self._write_datetime(row, col, date, cell_format)
File "C:\ProgramData\Anaconda3\lib\site-packages\xlsxwriter\worksheet.py", line 784, in _write_datetime
number = self._convert_date_time(date)
File "C:\ProgramData\Anaconda3\lib\site-packages\xlsxwriter\worksheet.py", line 3892, in _convert_date_time
self.remove_timezone)
File "C:\ProgramData\Anaconda3\lib\site-packages\xlsxwriter\utility.py", line 677, in datetime_to_excel_datetime
raise TypeError("Unknown or unsupported datetime type")
TypeError: Unknown or unsupported datetime type
ВХОДНОЙ ФАЙЛ ДЛЯ ПЕРВЫХ 10 СТРОК
1;2;3;4;5;6;7;8;9;
LOCATION;FILTER NR;X COORD;Y COORD;SURFACE LEV (m-ref);TOP FILTER (m-ref);BOTTOM FILTER (m-ref);MEAS POINT LEV (m-ref);SED SUMP LENGTH (m);START DATE;
pb 1-1;1;1;1;1;1;1;;;2006-08-17 00:00:00
LOCATION;FILTER NR;DATE;VALUE (m-ref)
pb 1-1;1;2006-08-17 00:00:00;40.384
pb 1-1;1;2006-08-18 00:00:00;40.337
pb 1-1;1;2006-08-19 00:00:00;40.296
pb 1-1;1;2006-08-20 00:00:00;40.321
pb 1-1;1;2006-08-21 00:00:00;40.358000000000004
ЖЕЛАЕМЫЙ РЕЗУЛЬТАТ
Идеально, за исключением того, что дата и время не распознаются.