How to write a timetable to excel with rowtimes as dates without times?
조회 수: 12 (최근 30일)
이전 댓글 표시
Take this simple example:
m = (1:3)';
dates = datetime(2025,m,15);
tt = timetable(dates,m);
writetimetable(tt,'tt.xlsx')
tt is a 3x1 timetable with dates but no times 00:00:
dates m
___________ _
15-Jan-2025 1
15-Feb-2025 2
15-Mar-2025 3
But the resulting excel sheet tt.xlsx includes the times 00:00:
dates m
1/15/25 00:00 1
2/15/25 00:00 2
3/15/25 00:00 3
How can I make writetimetable create an excel sheet with dates but no times 00:00?
댓글 수: 0
채택된 답변
Star Strider
2025년 7월 4일
That is likely a problem with Excel.
MATLAB writes the timetable correctly --
m = (1:3)';
dates = datetime(2025,m,15)
tt = timetable(dates,m);
writetimetable(tt,'tt.xlsx')
TT1 = readtimetable('tt.xlsx')
(I am using Ubuntu 24.04 so I do not have Excel or access to it.)
.
댓글 수: 12
Star Strider
2025년 7월 5일
Jeremy Hughes
2025년 8월 11일
I'll confirm that the format that Excel is applying here is out of MATLAB's control. The PreserveFormat argument should work on a Mac, but has no effect on the date format, unfortunately.
추가 답변 (3개)
Chuguang Pan
2025년 7월 4일
편집: Chuguang Pan
2025년 7월 4일
You can use "InputFormat" option to specify the date format
m = (1:3).';
dates = datetime(2025,m,15,"InputFormat","dd-MM-yyyy");
tt = timetable(dates,m);
writetimetable(tt,'TT.xlsx');
readtimetable('TT.xlsx')
댓글 수: 1
Dyuman Joshi
2025년 7월 4일
편집: Dyuman Joshi
2025년 7월 4일
This does not work. The problem is with the excel that saves the data - Open the excel and you'd find the issue OP is facing.
Paul
2025년 7월 5일
"If there was a way in Matlab to change the format in the first column in the excel file from "m/d/yy hh:mm" to "d-mmm-yyyy", my problem would be solved."
Seems like you might be able to define an empty .xlsx file that has the first column, starting from the second row, have the format you want. Call it empty.xlsx. Then when you want to write, copyfile empty.xlsx to the filename you want, and then use writetimetable with PreserveFormat and UseExcel both set to true. I didn't test this approach.
댓글 수: 3
Paul
2025년 7월 6일
Interesting. Works for me. Windows 11. Matlab 2024a.
>> copyfile empty.xlsx tt.xlsx
>> m = (1:3)';
>> dates = datetime(2025,m,15);
>> tt = timetable(dates,m);
>> writetimetable(tt,'tt.xlsx','PreserveFormat',true,'UseExcel',true);

Walter Roberson
2025년 7월 7일
For MacOS and Linux, it is not possible to PreserveFormat .
About the best you can do on MacOS is to convert the timetable to a table, set the Format property of the appropriate column of the table to something like 'dd-MMM-uuuu', then set the appropriate column to be string() of the appropriate column. This will convert the column to the text in dd-MMM-uuuu format.
Unfortunately it is likely that Excel will then interpret the column as text rater than as datetime format.
댓글 수: 3
Paul
2025년 8월 25일
According to @Jeremy Hughes in this comment, PreserveFormat should work on Mac, but perhaps with no capability to format dates.
참고 항목
카테고리
Help Center 및 File Exchange에서 Spreadsheets에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!