Wiem, że to stare pytanie, ale problem nie zniknie wkrótce. Pliki CSV są łatwe do wygenerowania z większości języków programowania, raczej małe, czytelne dla człowieka w chrupku dzięki zwykłemu edytorowi tekstu i wszechobecne.
Problem dotyczy nie tylko dat w polach tekstowych, ale wszystko , co liczbowe, również jest konwertowane z tekstu na liczby. Kilka przykładów, w których jest to problematyczne:
- Kody pocztowe / pocztowe
- numer telefonu
- rządowe numery identyfikacyjne
które czasami mogą zaczynać się od jednego lub więcej zer (0), które są wyrzucane po przekształceniu na numeryczne. Lub wartość zawiera znaki, które można pomylić z operatorami matematycznymi (jak w datach: /, -).
Dwa przypadki, że mogę myśleć, że rozwiązanie „poprzedzenie =”, jak wspomniano wcześniej, może nie być idealne jest
- gdzie plik może zostać zaimportowany do programu innego niż MS Excel (przychodzi mi na myśl funkcja korespondencji seryjnej MS Word),
- gdzie czytelność dla człowieka może być ważna.
Mój hack do obejścia tego
Jeśli jeden pre / dopisuje do wartości znak nienumeryczny i / lub nie-datę, wartość zostanie rozpoznana jako tekst i nie zostanie przekonwertowana. Znak niedrukowalny byłby dobry, ponieważ nie zmieni wyświetlanej wartości. Jednak zwykły stary znak spacji (\ s, ASCII 32) nie działa w tym przypadku, ponieważ zostaje odcięty przez program Excel, a następnie wartość nadal jest konwertowana. Ale istnieje wiele innych drukowania i przestrzeń niedrukujące znaki, które będzie działać dobrze. Najłatwiej jest jednak dołączyć (dodać po) prosty znak tabulacji (\ t, ASCII 9).
Korzyści z tego podejścia:
- Dostępne z klawiatury lub z łatwym do zapamiętania kodem ASCII (9),
- To nie przeszkadza w imporcie,
- Zwykle nie przeszkadza to w wynikach korespondencji seryjnej (w zależności od układu szablonu - ale zwykle dodaje tylko spację na końcu wiersza). (Jeśli jest to jednak problem, spójrz na inne znaki, np. Spację o zerowej szerokości (ZWSP, Unicode U + 200B)
- nie stanowi dużej przeszkody podczas przeglądania pliku CSV w Notatniku (itp.),
- i można je usunąć przez znajdowanie / zamienianie w programie Excel (lub Notatniku itp.).
- Nie musisz importować pliku CSV, ale wystarczy kliknąć dwukrotnie, aby otworzyć plik CSV w programie Excel.
Jeśli istnieje powód, dla którego nie chcesz używać tej karty, poszukaj w tabeli Unicode czegoś innego.
Inna opcja
może być generowanie plików XML, dla których pewien format jest również akceptowany do importowania przez nowsze wersje MS Excel i który pozwala na znacznie więcej opcji podobnych do formatu .XLS, ale nie mam z tym doświadczenia.
Istnieją więc różne opcje. W zależności od wymagań / aplikacji jedno może być lepsze od drugiego.
Dodanie
Trzeba powiedzieć, że nowsze wersje (2013+) MS Excel nie otwierają już CSV w formacie arkusza kalkulacyjnego - jeszcze jeden speedbump w swoim przepływie pracy, co czyni Excel mniej przydatnym ... Przynajmniej istnieją instrukcje, jak go obejść. Zobacz np. Ten Stackoverflow: Jak poprawnie wyświetlać pliki .csv w programie Excel 2013?
.