Excel niszczy znak specjalny po zapisaniu jako CSV


21

Pracuję nad projektem, który wykorzystuje plik CSV dostarczony przez klienta do wypełnienia bazy danych. Klient utworzy arkusz kalkulacyjny, a następnie zapisze go jako plik CSV do przesłania, który następnie zostanie przeanalizowany w bazie danych.

Problem polega na tym, że za każdym razem, gdy klient zapisuje arkusz kalkulacyjny programu Excel jako plik .csv MS-DOS, wiele znaków specjalnych jest konwertowanych na znaki zapytania „?” (symbole takie jak „” /). Jeśli jednak otworzymy plik CSV i ręcznie zastąpimy każdy z odpowiednim znakiem, to zadziała dobrze.

Problem polega na tym, że plik danych jest OGROMNY i nie możemy tego racjonalnie zrobić, więc miałem nadzieję, że istnieje sposób, aby go zapisać. Próbowaliśmy eksportować jako Unicode i ASCII bezskutecznie. Próbowaliśmy również przesyłać do dokumentów Google, a ponowne zapisanie powoduje jednak uszkodzenie tych znaków.


2
Jeśli korzystasz z programu Excel 2007, w oknie dialogowym Zapisz plik jako pozostało tylko przycisk Zapisz i rozwijane menu Narzędzia. Jeśli wybierzesz opcję weboption i na zakładce Kodowanie możesz wybrać określone kodowanie. Spróbuj, jeśli to ci pomoże

Jaki jest przykład tego tekstu?
Enderland

1
Problem nie jest powtarzalny. Upewnij się, że dane są faktycznie tym, co opisujesz, a nie niektórymi znakami, których nie można przedstawić w kodowaniu MS-DOS.
Jukka K. Korpela

Odpowiedzi:


11

Upewnij się, że wybierasz zapisywanie jako a, CSV (Comma Delimited)a nie a CSV (MS-DOS), ponieważ DOS nie obsługuje znaków UTF-8.


6

Przekonałem się, że problem utraconych znaków występuje tylko (w moim przypadku) podczas zapisywania z formatu xlsx do formatu csv. Próbowałem najpierw zapisać plik xlsx do xls, a następnie do csv. To faktycznie działało.


To mi nie działa. Nadal dostaję? w pliku csv
thanos.a

4

Możliwym obejściem jest zapisanie go jako Unicode Text(2007, nie jestem pewien co do poprzednich wydań), który zapisuje go jako plik tekstowy oddzielony tabulatorami.

Ten plik zachował moje znaki Unicode (w moim przypadku pracowałem ze znakami azjatyckimi ) podczas tworzenia pewnego rodzaju pliku tekstowego, który możesz następnie uruchomić za pomocą zewnętrznych narzędzi, aby w razie potrzeby przekonwertować na plik csv.

Moje dane wejściowe nie miały jednak kart osadzonych w każdej komórce i nie jestem pewien, jak by to było obsługiwane.


3

Oto, co działa dla mnie:

  1. Wprowadź poprawki danych w programie Excel lub CSV
  2. Zapisz plik jako tekst Unicode
  3. Otwórz NOTEPAD
  4. Otwórz plik Unicode, który właśnie zapisałeś za pomocą NOTEPAD
  5. Użyj kursora, aby podświetlić pusty obszar zawierający pojedynczą kartę 5a. Użyj spacji między Identyfikatorem pozyskania a typem żądania, ponieważ zawiera JEDEN TAB!
  6. Naciśnij Cnrl-C, aby skopiować znak tabulatora
  7. Wpisz Cnlr-H, aby otworzyć pole funkcji Zamień
  8. Kliknij pole tekstowe Znajdź, a następnie wpisz Cnlr-V, aby wkleić kartę
  9. Kliknij w pole Zamień na tekst i wpisz przecinek
  10. Kliknij Zamień, aby przetestować raz. Sprawdź, czy karta w pliku została zastąpiona przecinkiem
  11. Kliknij Zamień wszystko
  12. Kliknij Anuluj
  13. Zapisz plik i wyjdź
  14. W Eksploratorze Windows zmień rozszerzenie pliku na .csv

1
To działało dla mnie przy użyciu Notepad ++.
ChrisB

Tak, musiałem wyeksportować jako Unicode, a także znaleźć i zamienić tabulatory na przecinki.
nilloc

2

Mam ten problem od jakiegoś czasu i wreszcie poświęciłem trochę czasu, aby go rozwiązać! Mogłem (pozornie) naprawić problem, zapisując jako „Windows Comma Separated (.csv)”. Próbowałem z .xlsx i .xls, oba przekonwertowane na .csv w porządku. Mam nadzieję, że to pomoże - daj mi znać, jeśli pojawią się jakiekolwiek problemy z tą metodą. Prześlę raport, jeśli coś zobaczę w ciągu najbliższych kilku tygodni.


1
Witamy w Super User. Cieszę się, że wskakujesz od razu i odpowiadasz na pytania.
CharlieRB

1

Rozwiązanie:

  1. Otwórz plik CSV w Notatniku (zauważysz, że mówi ANSI), a następnie zapisz go ponownie jako UTF-8 w Notatniku.

  2. Następnie import powinien działać. Jeśli jednak otworzysz go ponownie w programie Excel i po prostu Zapisz go nie będzie działać, ponieważ program Excel nie może natywnie kodować w UTF-8.

  3. Inną opcją jest praca z plikiem CSV na stronie www.LibreOffice.org (bezpłatny), który może poprawnie kodować w UTF-8 (chociaż sam tego nie próbowałem).

Wystąpił podobny problem z importem csv produktów z frakcjami do WooCommerce, który został odrzucony z powodu „?” znaki błędów. Wynika to z faktu, że plik CSV nie został zakodowany w UTF-8. JEDNAK, nawet po zapisaniu pliku CSV w programie Excel z kodowaniem UTF-8 nadal nie działał.

Po przejrzeniu wielu forów wydaje się, że chociaż Excel daje możliwość kodowania jako UTF-8 - podczas OSZCZĘDZANIA JAKO CSV, Excel automatycznie konwertuje go z powrotem na ANSI, nawet jeśli wybierzesz UTF-8.



0

Nawet napotkałem problem ze znakami specjalnymi podczas pobierania japońskich terminów w formacie .csv. Jednak gdy zapisałem plik .csv w formacie tekstowym (rozdzielany tabulatorami), japońskie znaki były idealnie wypełnione. Następnie skopiowałem dane z pliku tekstowego i wkleiłem w arkuszu kalkulacyjnym. Działało dobrze!!!

Dzięki, Vaishakh


To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy będziesz mieć wystarczającą reputację , będziesz mógł komentować każdy post .
Ramhound

0

Znaleziono najlepsze rozwiązanie: http://woshka.com/blog/microsoft/microsoft-excel/solve-the-problem-saving-excel-csv-format-with-utf-8-unicode-encoding.html

Z linku:

1-Kliknij menu Start

Panel sterowania 2-Select

3-Znajdź opcje regionalne i językowe w trybie klasycznym lub wpisz jego nazwę w pasku wyszukiwania w prawym górnym rogu okna panelu sterowania

4-Kliknij kartę Zaawansowane i kliknij ustawienia regionalne

5-Kliknij perski lub arabski lub żądany program do kodowania UTF-08, który chcesz zapisać w programie Excel do pliku CSV


woshka.com nie jest już prawidłowym adresem URL, w tej chwili jest zaparkowaną domeną.
Craig London

0

dla ™ znalazłem rozwiązanie. W pliku .xlsx zamień wszystkie „™” na „& tr-ade;”. usuń - z zamień na. Zapisz plik jako .csv i gotowe. szkoda, że ​​to dla ciebie nie zadziała.


0

Na komputerze Mac to działało dla mnie.

W programie Excel wybierz opcję Zapisz jako, a następnie z menu rozwijanego wybierz pozycję oddzieloną przecinkami (CSV).

To po prostu działa !!!


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.