Czy ktoś wie, czy istnieje token, który mogę dodać do mojego pliku CSV dla określonego pola, aby program Excel nie próbował przekonwertować go na datę?
Próbuję napisać plik .csv z mojej aplikacji, a jedna z wartości zdarza się wyglądać na tyle, że Excel automatycznie konwertuje go z tekstu na datę. Próbowałem umieścić wszystkie moje pola tekstowe (łącznie z tym, które wyglądają jak data) w podwójnych cudzysłowach, ale to nie działa.
Odpowiedzi:
Przekonałem się, że umieszczenie znaku „=” przed podwójnymi cudzysłowami pozwoli osiągnąć to, czego chcesz. Zmusza dane do bycia tekstem.
na przykład. = „2008-10-03”, = „więcej tekstu”
EDYCJA (zgodnie z innymi postami) : z powodu błędu Excel 2007 zauważonego przez Jeffiekinsa, należy skorzystać z rozwiązania zaproponowanego przez Andrew :
"=""2008-10-03"""
źródło
"=""2008-10-03"""
. Zaktualizowano wpis.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:
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
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:
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? .
źródło
\t
do mojej postaci separacji;
... do cholery, MS Office, dlaczego to zajęło mi więcej niż 2 minuty, żeby to zrozumieć?column_name
). Wykonał także lewę. Dzięki!'
, ponieważ jest to trochę dobrze rozumiane i niezbyt rozpraszające ... ale niewidzialne byłoby lepsze.Pracując nad rozwiązaniem Jarod i problemem poruszonym przez Jeffiekinsa, możesz go zmodyfikować
do
źródło
"
wartości w dowolnym miejscu między datą."806676","None","41","=""05-16-2011""","100.00","False"
zamiast tego, a zobaczysz, że zapisanie i ponowne załadowanie powoduje utratę dzielonego tekstu.Miałem podobny problem i to obejście pomogło mi bez konieczności edytowania zawartości pliku csv:
Jeśli masz możliwość nazwania pliku inną nazwą niż „.csv”, możesz nazwać go rozszerzeniem „.txt”, takim jak „Myfile.txt” lub „Myfile.csv.txt”. Następnie, gdy otworzysz go w Excelu (nie metodą przeciągnij i upuść, ale używając Plik-> Otwórz lub listy ostatnio używanych plików), Excel dostarczy Ci „Kreatora importu tekstu”.
Na pierwszej stronie kreatora wybierz „Rozdzielany” dla typu pliku.
Na drugiej stronie kreatora wybierz „,” jako separator, a także wybierz kwalifikator tekstu, jeśli otoczyłeś swoje wartości cudzysłowami
Na trzeciej stronie zaznacz każdą kolumnę osobno i przypisz każdemu typ „Tekst” zamiast „Ogólne”, aby program Excel nie bałaganował twoich danych.
Mam nadzieję, że to pomoże tobie lub komuś z podobnym problemem!
źródło
OSTRZEŻENIE: W programie Excel '07 (przynajmniej) występuje błąd (inny): jeśli w zawartości pola występuje przecinek, nie analizuje on poprawnie = "pola, zawartości", ale umieszcza wszystko po przecinku w polu następujące pole, niezależnie od znaków cudzysłowu.
Jedynym obejściem, które znalazłem, które działa, jest wyeliminowanie =, gdy zawartość pola zawiera przecinek.
Może to oznaczać, że istnieją pewne pola, których nie można dokładnie przedstawić w „Excelu”, ale do tej pory ufam, że nikt nie jest zbyt zaskoczony.
źródło
field, content
ma"
w sobie. Np."=""field, co""ntent"""
""""
.1"2
, jeśli zdecydujesz się użyć tej sztuczki (w przeciwieństwie do pozostawienia jej tak, jak"1""2"
w pliku - program Excel już traktowałby to jako tekst), to końcowy poprawny ciąg w pliku CSV kierowanym na program Excel kończy się bycie"=""1""""2"""
.Podczas tworzenia ciągu do zapisania w moim pliku CSV w C # musiałem sformatować go w ten sposób:
źródło
2018 r
Jedyne właściwe rozwiązanie, które działało dla mnie (i również bez modyfikacji CSV ).
Excel 2010:
Excel office365: (wersja klienta)
Uwaga: Excel office365 (wersja internetowa), ponieważ piszę to, nie będziesz w stanie tego zrobić.
źródło
W programie Excel 2010 otwórz nowy arkusz. Na wstążce Dane kliknij „Pobierz dane zewnętrzne z tekstu”. Wybierz plik CSV, a następnie kliknij „Otwórz”. Kliknij Następny". Odznacz „Tab”, umieść znacznik wyboru obok „Przecinek”, a następnie kliknij „Dalej”. Kliknij dowolne miejsce w pierwszej kolumnie. Trzymając klawisz Shift, przeciągnij suwak w poprzek, aż będziesz mógł kliknąć ostatnią kolumnę, a następnie zwolnij klawisz Shift. Kliknij przycisk radiowy „tekst”, a następnie „Zakończ”
Wszystkie kolumny zostaną zaimportowane jako tekst, tak jak w pliku CSV.
źródło
Wciąż problem w wydaniu Microsoft Office 2016, raczej niepokojący dla tych z nas, którzy pracują z nazwami genów, takimi jak MARC1, MARCH1, SEPT1 itp. Rozwiązanie, które okazało się najbardziej praktyczne po wygenerowaniu pliku „.csv” w języku R, które zostaną następnie otwarte / udostępnione użytkownikom programu Excel:
HTH
źródło
Oto prosta metoda, której używamy w pracy podczas generowania pliku csv. Zmienia on nieco wartości, więc nie jest odpowiedni we wszystkich aplikacjach:
Dodaj spację do wszystkich wartości w pliku csv
To miejsce zostanie usunięte przez program Excel z liczb takich jak „1”, „2.3” i „–2.9e4”, ale pozostanie w datach takich jak „01/10/1993” i wartości logiczne jak „PRAWDA”, uniemożliwiając ich przekształcenie w wewnętrzne typy danych programu Excel.
Zapobiega również zapamiętywaniu podwójnych cudzysłowów przy wczytywaniu, więc niezawodny sposób tworzenia tekstu w pliku csv pozostaje niezmieniony przez NAWET JEŚLI JEŚLI jakiś tekst, taki jak „3.1415”, otacza go podwójnymi cudzysłowami I dodaje cały ciąg spacją, tzn. (używając pojedynczych cudzysłowów, aby pokazać, co wpiszesz) „3.1415”. Następnie w programie Excel masz zawsze oryginalny ciąg, z wyjątkiem tego, że jest on otoczony podwójnymi cudzysłowami i poprzedzony spacją, więc musisz uwzględnić te w dowolnych formułach itp.
źródło
"\xA0"
zamiast tego możesz użyć niełamliwej spacji - to zadziała.(Zakładając Excel 2003 ...)
Podczas korzystania z Kreatora zamiany tekstu na kolumny w kroku 3 możesz dyktować typ danych dla każdej kolumny. Kliknij kolumnę w podglądzie i zmień źle działającą kolumnę z „Ogólne” na „Tekst”.
źródło
Jest to jedyny sposób, w jaki wiem, jak to zrobić bez bałaganu w samym pliku. Jak zwykle w programie Excel, nauczyłem się tego, godzinami uderzając głową o biurko.
Zmień rozszerzenie pliku .csv na .txt; to powstrzyma Excel przed automatyczną konwersją pliku po jego otwarciu. Oto jak to zrobić: otwórz program Excel w pustym arkuszu, zamknij pusty arkusz, a następnie Plik => Otwórz i wybierz plik z rozszerzeniem .txt. Zmusza to program Excel do otwarcia „Kreatora importu tekstu”, w którym zadaje pytania o to, jak chcesz interpretować plik. Najpierw wybierz separator (przecinek, tabulator itp.), A następnie (tutaj jest ważna część) wybierz zestaw kolumn kolumn i wybierz formatowanie. Jeśli chcesz dokładnie, co jest w pliku, wybierz „Tekst”, a Excel wyświetli tylko to, co jest między ogranicznikami.
źródło
awk
- unikaj ponownego formatowania wartości podobnych do dat , gdzie problem dotyczy programu Excel niżawk
, pomimo tytułu pytania.(EXCEL 2007 i późniejsze)
Jak zmusić program Excel, aby nie „wykrywał” formatów daty bez edycji pliku źródłowego
Zarówno:
Data > Get external data > From Text
i wybierz plik CSV.
Tak czy inaczej, zostaną wyświetlone opcje importu, wystarczy wybrać każdą kolumnę zawierającą daty i powiedzieć programowi Excel, aby sformatował jako „tekst”, a nie „ogólny”.
źródło
To, co zrobiłem dla tego samego problemu, to dodanie następujących wartości przed każdą wartością csv: „=” „” i jednego podwójnego cudzysłowu po każdej wartości CSV, przed otwarciem pliku w programie Excel. Weźmy na przykład następujące wartości:
Należy je zmienić przed otwarciem w programie Excel, aby:
Po wykonaniu tej czynności każda wartość komórki pojawi się jako formuła w programie Excel, więc nie będzie sformatowana jako liczba, data itp. Na przykład wartość 012345 pojawia się jako:
źródło
1234500198475E-8
; w ten sposób dalsze obliczenia w programie Excel będą nadal możliwe.Żadne z oferowanych tutaj rozwiązań nie jest dobrym rozwiązaniem. Może to działać w indywidualnych przypadkach, ale tylko wtedy, gdy masz kontrolę nad ostatecznym wyświetlaniem. Weź mój przykład: moja praca tworzy listę produktów, które sprzedają do sprzedaży detalicznej. Jest to format CSV i zawiera kody części, niektóre zaczynają się od zera, ustawianych przez producentów (nie pod naszą kontrolą). Usuń początkowe zera, a faktycznie możesz dopasować inny produkt. Klienci detaliczni chcą listy w formacie CSV z powodu programów do przetwarzania zaplecza, które również są poza naszą kontrolą i różnią się w zależności od klienta, więc nie możemy zmienić formatu plików CSV. Bez prefiksu „=” ani dodanych zakładek. Dane w surowych plikach CSV są poprawne; problemy zaczynają się, gdy klienci otwierają te pliki w programie Excel. I wielu klientów tak naprawdę nie zna się na komputerach. Mogą prawie otworzyć i zapisać załącznik do wiadomości e-mail. Myślimy o dostarczeniu danych w dwóch nieco różnych formatach: jednym jako Excel Friendly (przy użyciu opcji zasugerowanych powyżej poprzez dodanie TAB, a drugim jako „master”. Ale może to być pobożne życzenie, ponieważ niektórzy klienci nie zrozumieją, dlaczego musimy to zrobić. W międzyczasie nadal wyjaśniamy, dlaczego czasami widzą „złe” dane w swoich arkuszach kalkulacyjnych. Dopóki Microsoft nie dokona właściwej zmiany, nie widzę w tym właściwej rozdzielczości, o ile nie ma się kontroli nad tym, jak użytkownicy końcowi użyj plików. Ale może to być pobożne życzenie, ponieważ niektórzy klienci nie zrozumieją, dlaczego musimy to zrobić. Tymczasem nadal wyjaśniamy, dlaczego czasami widzą „złe” dane w swoich arkuszach kalkulacyjnych. Dopóki Microsoft nie dokona właściwej zmiany, nie widzę w tym właściwej rozdzielczości, o ile nie ma się kontroli nad tym, jak użytkownicy końcowi korzystają z plików. Ale może to być pobożne życzenie, ponieważ niektórzy klienci nie zrozumieją, dlaczego musimy to zrobić. Tymczasem nadal wyjaśniamy, dlaczego czasami widzą „złe” dane w swoich arkuszach kalkulacyjnych. Dopóki Microsoft nie dokona właściwej zmiany, nie widzę w tym właściwej rozdzielczości, o ile nie ma się kontroli nad tym, jak użytkownicy końcowi korzystają z plików.
źródło
"\xA0"
(nie przerywając miejsca) do danych.W tym tygodniu spotkałem się z tą konwencją, która wydaje się być doskonałym podejściem, ale nigdzie nie mogę jej znaleźć. Czy ktoś to zna? Czy możesz podać źródło? Nie szukałem godzinami, ale mam nadzieję, że ktoś rozpozna to podejście.
Przykład 1: = („012345678905”) wyświetla się jako 012345678905
Przykład 2: = („1954-12-12”) wyświetla się jako 1954-12-12 , a nie 12/12/1954 .
źródło
To nie jest Excel. System Windows rozpoznaje formułę, dane jako datę i dokonuje autokorekty. Musisz zmienić ustawienia systemu Windows.
„Panel sterowania” (-> „Przełącz do widoku klasycznego”) -> „Opcje regionalne i językowe” -> karta „Opcje regionalne” -> „Dostosuj ...” -> karta „Liczby” -> A następnie zmień symbole zgodnie z tym, czego chcesz.
http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html
Będzie działał na twoim komputerze, jeśli te ustawienia nie zostaną zmienione, na przykład na komputerze twoich klientów zobaczą daty zamiast danych.
źródło
Cześć, mam ten sam problem,
Piszę ten vbscipt, aby utworzyć kolejny plik CSV. Nowy plik CSV będzie zawierał spacje czcionek w każdym polu, więc program Excel zrozumie go jako tekst.
Tak więc tworzysz plik .vbs z kodem poniżej (na przykład Modify_CSV.vbs), zapisz go i zamknij. Przeciągnij i upuść oryginalny plik do pliku vbscript. Stworzy nowy plik z „SPACE_ADDED” do nazwy pliku w tej samej lokalizacji.
źródło
Bez modyfikacji pliku csv możesz:
excel poprawnie sformatuje i oddzieli twoje komórki csv jako tekst sformatowany ignorując automatyczne formaty daty.
To głupie obejście, ale przed zaimportowaniem pokonuje modyfikowanie danych csv. Andy Baird i Richard niejako wymykali się tej metodzie, ale przeoczyli kilka ważnych kroków.
źródło
Wiem, że to stary wątek. Dla takich jak ja, którzy nadal mają ten problem przy użyciu pakietu Office 2013 za pośrednictwem obiektu com PowerShell, mogą skorzystać z metody opentext . Problem polega na tym, że ta metoda ma wiele argumentów, które czasem wzajemnie się wykluczają. Aby rozwiązać ten problem, możesz użyć metody invoke-namedparameter wprowadzonej w tym poście . Przykładem może być
Niestety właśnie odkryłem, że ta metoda w jakiś sposób psuje parsowanie csv, gdy komórki zawierają łamanie linii. Jest to obsługiwane przez csv, ale wydaje się, że implementacja mikroprocesorów jest błędna. W jakiś sposób nie wykrył też znaków specyficznych dla Niemiec. Nadanie jej właściwej kultury nie zmieniło tego zachowania. Wszystkie pliki (csv i skrypt) są zapisywane z kodowaniem utf8. Najpierw napisałem następujący kod, aby wstawić komórkę csv według komórek.
Ale to jest wyjątkowo wolne i dlatego szukałem alternatywy. Najwyraźniej program Excel umożliwia ustawienie wartości zakresu komórek za pomocą macierzy. Użyłem więc algorytmu na tym blogu, aby przekształcić plik CSV w wielowątkowy.
Możesz użyć powyższego kodu, ponieważ powinien on przekonwertować dowolny plik CSV na program Excel. Wystarczy zmienić ścieżkę do csv i znak separatora u dołu.
źródło
W moim przypadku plik „Sept8” w pliku csv wygenerowanym przy użyciu R został przekonwertowany na program „8-Sept” przez program Excel 2013. Problem został rozwiązany za pomocą funkcji write.xlsx2 () w pakiecie xlsx w celu wygenerowania pliku wyjściowego w formacie xlsx , które mogą być ładowane przez program Excel bez niechcianej konwersji. Tak więc, jeśli otrzymałeś plik csv, możesz spróbować załadować go do R i przekonwertować na xlsx za pomocą funkcji write.xlsx2 ().
źródło
Obejście problemu za pomocą Dysku Google (lub Numbers, jeśli używasz komputera Mac):
Alternatywnie, jeśli korzystasz z komputera Mac w kroku 3, możesz otworzyć dane w Numbers.
źródło
(EXCEL 2016 i nowsze wersje, tak naprawdę nie próbowałem w starszych wersjach)
źródło
Ok znalazłem prosty sposób na zrobienie tego w programie Excel 2003 do 2007. Otwórz pusty skoroszyt xls. Następnie przejdź do menu Dane, zaimportuj dane zewnętrzne. Wybierz plik csv. Przejdź przez kreatora, a następnie w „formacie danych kolumny” wybierz dowolną kolumnę, która musi zostać zmuszona do „tekstu”. Spowoduje to zaimportowanie całej kolumny jako formatu tekstowego, uniemożliwiając Excelowi próby traktowania określonych komórek jako daty.
źródło
Ten problem jest nadal obecny w Mac Office 2011 i Office 2013, nie mogę temu zapobiec. Wydaje się to takie podstawowe.
W moim przypadku miałem wartości takie jak „1–2” i „7–12” w pliku CSV poprawnie ujęte w cudzysłowy, to automatycznie konwertuje się na datę w programie Excel, jeśli spróbujesz później przekonwertować go na zwykły tekst, otrzymasz reprezentacja liczbowa daty, taka jak 43768. Dodatkowo formatuje ponownie duże liczby znalezione w kodach kreskowych i liczbach EAN do liczb 123E +, których nie można ponownie przekonwertować.
Odkryłem, że Arkusze Google na Dysku Google nie konwertują liczb na daty. Kody kreskowe zawierają przecinki co 3 znaki, ale można je łatwo usunąć. Bardzo dobrze radzi sobie z CSV, szczególnie w przypadku CSV MAC / Windows.
Może kiedyś kogoś ocalę.
źródło
ŁATWE ROZWIĄZANIE Właśnie dzisiaj to wymyśliłem.
Po zakończeniu edycji możesz zawsze otworzyć go ponownie w programie Word, aby ponownie zastąpić myślniki myślnikami.
źródło
Robię to w przypadku numerów kart kredytowych, które ciągle przekształcają się w notację naukową: w końcu importuję plik .csv do Arkuszy Google. Opcje importu pozwalają teraz wyłączyć automatyczne formatowanie wartości liczbowych. Ustawiam wrażliwe kolumny na Zwykły tekst i pobieram jako xlsx.
To okropny przepływ pracy, ale przynajmniej moje wartości pozostały takie, jakie powinny być.
źródło
Zrobiłem to makro vba, które zasadniczo formatuje zakres wyjściowy jako tekst przed wklejeniem liczb. Działa idealnie dla mnie, gdy chcę wkleić wartości, takie jak 8/11, 23/6, 1/3 itd. Bez Excela interpretującego je jako daty.
Jestem bardzo zainteresowany tym, czy działa to również dla innych ludzi. Przez jakiś czas szukałem rozwiązania tego problemu, ale nie widziałem szybkiego rozwiązania VBA, które wcześniej nie obejmowało wstawiania „przed tekstem wejściowym. Ten kod zachowuje dane w oryginalnej formie.
źródło
Jeśli umieścisz odwrócony przecinek na początku pola, zostanie on zinterpretowany jako tekst.
Przykład:
25/12/2008
staje się'25/12/2008
Możesz także wybrać typ pola podczas importowania.
źródło
Alternatywna metoda:
Konwertuj format kolumny, którą chcesz zmienić, na „Tekst”. Wybierz wszystkie komórki, które chcesz zachować, skopiuj. Bez odznaczania tych kolumn kliknij „Edytuj> Wklej specjalnie> Jako wartości”
Zapisz jako CSV. Pamiętaj, że musi to być ostatnia czynność, którą zrobisz z plikiem, ponieważ po ponownym otwarciu formatuje się on jako daty, ponieważ formatów komórek nie można zapisać w plikach CSV.
źródło