I work with timeseries data and often save and import files into R from csvs in excel. I've noticed that excel does not like date-times in the format "m/d/yyyy h:mm:ss". I can go into format cells and enter a custom formula to force it to display the whole date but if I open a file, it will automatically format the date-time to m/d/yyyy h:mm and if I then save the file accidentally, close it and reopen it. The second information of m/d/yyyy h:mm:ss is lost. Is there any way to prevent this? Other than splitting date-times into multiple columns and having lots of back up copies?
Thanks!
I have a CSV file which has time column and its values are String in dd MMM HH:mm format.
Name,Time
Farms,20 Dec 14:00
When I open the CSV file with Excel, Excel automatically converts these Timevalues to date format, thereby modifying to add year value on its own. So 20 Dec 14:00 is converted to 20/12/22 14:00.
What I want is that Excel should display the time column values as raw string, i,e. 20 Dec 14:00.
Some similar questions, suggetsed to modify the CSV file by adding = symbol before the time column values, so that excel treat it as string. But this is not what I want.
I don't want to make any changes to CSV file, but want a way by making some changes in Excel itself.
Instead of opening the .CSV file by directly double-clicking, or dragging it onto an EXCEL instance, try using File->Open method, and use the text import Wizard, choose the comma delimiter, and when when it asks for the type of the column, choose text (you can choose multiple columns and choose text).
Alternatively, create a new empty worksheet, format the first column as text, open the file in a good text editor (like Notepad++), copy whole text (Ctrl-A, Ctrl-C), Alt-tab to EXCEL, place the cursor in A1, and paste (Ctrl-V). Now you can use the Data->Text to Columns wizard, and again you can choose text as type.
It can also be done in VBA, but performing the above steps are acceptable then why.
My problem
I have an Excel workbook that auto-formats the date field in my Excel tables to a custom MM-DD-YYYY format when adding new dates. This problem happens across all Excel-tables in my workbook. This happens when adding dates through VBA, and manually entering a new line for a table. When selecting a cell, the formula bar shows the correct format, DD-MM-YYYY. This does not happen when typing outside of tables (i.e. in a blank cell formatted as general). The format displayed in the number format editor under custom: m-d-yyyy.
What i have tried
Selecting the entire column and formatting as the short-date format (DD-MM-YYYY). Still reverts to the custom format when adding new data.
When a column contains a Date field, the dataclip displays it. When the "Export/Share" link is clicked and XLS selected, the resulting Date column is treated like a TEXT column in XLS.
Changing the Format in XLS does not seem to have an effect on it.
Is there a proper format for export that will make it into a Date cell?
I have tried 'MM-DD-YYY', 'MM/DD/YYY' and left it as default display (which puts the date and time in the column).
None of these are "dates" in XLS.
Thanks
I have done some tests and I think dates are exported as YYYY-MM-DD.
I really don't have Excel installed on this computer right now, but I downloaded an xls file from dataclips and imported it on Googlesheets. Dates were correct without any conversion needed.
I have a .xls I need to convert to .csv
The file contains some date columns. The format on the date is "*14/03/2001" which, according to Excel means the date responds to regional date and time settings specified for the OS.
Opening in Excel you see:
20/01/2013
01/05/2013
Save as... CSV
Open in notepad:
01/20/2013
05/01/2013
I have temporarily fixed by setting date formats to "14/03/2001" (no *) but even some other custom formats with no *, like "d/mm/yyyy h:mm" get mangled when saved to CSV.
Although keeping this in mind http://xkcd.com/1179/
In the end I decided to use the format YYYYMMDD in all CSV files, which doesn't convert to date in Excel, but can be read by all our applications correctly.
You can save your desired date format from Excel to .csv by following this procedure, hopefully an excel guru can refine further and reduce the number of steps:
Create a new column DATE_TMP and set it equal to the =TEXT( oldcolumn, "date-format-arg" ) formula.
For example, in your example if your dates were in column A the value in row 1 for this new column would be:
=TEXT( A1, "dd/mm/yyyy" )
Insert a blank column DATE_NEW next to your existing date column.
Paste the contents of DATE_TMP into DATE_NEW using the "paste as value" option.
Remove DATE_TMP and your existing date column, rename DATE_NEW to your old date column.
Save as csv.
Change the date and time settings for your computer in the "short date" format under calendar settings. This will change the format for everything yyyy-mm-dd or however you want it to display; but remember it will look like that even for files saved on your computer.
At least it works.
You need to do a lot more work than 1. click export 2. Open file.
I think that when the Excel CSV documentation talks about OS and regional settings being interpreted, that means that Excel will do that when it opens the file (which is in their "special" csv format). See this article, "Excel formatting and features are not transferred to other file formats"
Also, Excel is actually storing a number, and converting to a date string only for display. When it exports to CSV, it is converting it to a different date string. If you want that date string to be non-default, you will need to convert your Excel cells to strings before performing your export.
Alternately, you could convert your dates to the number value that Excel is saving. Since that is a time code, it actually will obey OS and regional settings, assuming you import it properly. Notepad will only show you the 10-digit number, though.
If you use a Custom format, rather than one of the pre-selected Date formats, the export to CSV will keep your selected format. Otherwise it defaults back to the US format
Place an apostrophe in front of the date and it should export in the correct format. Just found it out for myself, I found this thread searching for an answer.
A not so scalable fix that I used for this is to copy the data to a plain text editor, convert the cells to text and then copy the data back to the spreadsheet.
Change the date range to "General" format and save the workbook once, and change them back to date format (eg, numberformat = "d/m/yyyy") before save & close the book. savechanges parameter is true.
You can send your date to excel not like the "date" but like just a "string" with empty space at the start and end of the string.
Your problem is happening due to excel see your '11/02/2023' like a date, but you can hack it and change this date to a simple string like ' 11/02/2023 '.
Old: '11/02/2023'
New (solution): ' 11/02/2023 '