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.


źródło
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.

Ƭᴇcʜιᴇ007
źródło
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.

Eric
źródł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.

MxLDevs
źródło
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
Pat HIll
źródło
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.

Courtney Lowe
źródło
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.

Hen_za
źródło
1
  1. Pobierz i zainstaluj dodatek Unicode CSV dla programu Excel z https://github.com/jaimonmathew/Unicode-CSV-Addin
  2. Zapisz plik CSV z nowego menu „Unicode CSV”, jak pokazano na poniższym obrazku.

wprowadź opis zdjęcia tutaj

thanos.a
źródło
1
Czy mógłbyś zamieścić link do tego dodatku?
Xavier Poinas
Zaktualizowałem odpowiedź, aby uwzględnić stronę github. Tam możesz znaleźć stronę pobierania
thanos.a
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

Vaishakh
źródło
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

James Ricardoson
źródło
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.

Mathieu
źródło
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 !!!

Manuel Lema
źródło
0

Zapisz jako Unicode Zmień nazwę pliku Unicode na .csv ( https://www.youtube.com/watch?v=1VP8__shxTg )

Webmax
źródło
Witamy w Super User! Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
bertieb