Jak uniknąć podwójnych cudzysłowów podczas zapisywania pliku Excel jako Unicode?

9

Mam plik Excel z zawartością Unicode, którego niektóre komórki zawierają na przykład tekst w cudzysłowie "text".

Kiedy zapisuję plik Excel do pliku tekstowego w formacie Unicode, tekst zawierający podwójny cudzysłów zostaje zapisany na przykład jako trzy podwójne cudzysłowy """text""".

W niektórych miejscach mam nawet tekst zawierający przecinek (,). Na przykład, text,który jest konwertowany na "text,"plik Unicode. Dodaje do tekstu podwójne cudzysłowy, które, jak sądzę, zawierają znaki specjalne.

Jak mogę tego uniknąć?

karthik
źródło

Odpowiedzi:

7

Jest to standardowe zachowanie (i podobne do sposobu zapisywania plików CSV). Zobacz RFC 4180 - Wspólny format i typ MIME dla plików wartości rozdzielanych przecinkami (CSV) :

Jeśli do zamykania pól stosowane są cudzysłowy, wówczas cytat pojawiający się w polu musi być poprzedzony innym podwójnym cudzysłowem.

Jak to się ma do twojej sprawy?

  • Oznacza to, że "Text" należy zapisać jako """Text""", zewnętrzne cudzysłowy ograniczające pole, a dwa pozostałe są używane do ucieczki od rzeczywistych cudzysłowów użytych w polu tekstowym. W przeciwnym razie "Text"zostanie po prostu przeanalizowany jako Texti stracisz swoje oferty podczas ponownego otwierania pliku.

  • Program Excel również wybiera cytowanie Text,, ponieważ przecinek jest używany jako separator w plikach oddzielonych przecinkami, a nie umieszczenie go w cudzysłowach oznaczałoby, że text,podczas ponownego otwierania pliku jest on analizowany jako dwa pola.

Jeśli nie chcesz ich w swoich wynikach, rozważ otwarcie plików wynikowych w edytorze tekstu i usunięcie wszystkich cudzysłowów za pomocą prostego wyszukiwania i zamiany.

slhck
źródło
2
Masz na myśli, że nie ma innego sposobu rozwiązania tego problemu niż zastąpienie ich w edytorze tekstu.
karthik
Nie bardzo, ponieważ Excel musi to robić ze względu na kompatybilność. Może uda się wymyślić Makro, które wykonuje niestandardowy eksport, ale nie jestem ekspertem w tej dziedzinie.
slhck 24.10.11
Ok, dzięki, postaram się go zastąpić po stronie kodowania.
karthik
@slhck: Mam problem z zapisaniem Unicode jako CSV w 2010 r. superuser.com/q/1210099/234380
NJMR
3

Też miałem ten problem. Potem zauważyłem, że przeoczyłem opcję Zapisz jako typ:Tekst sformatowany (rozdzielany spacją) ”. Również trzeba określić. rozszerzenie txt lub domyślnie będzie miało rozszerzenie .prn. Na przykład filename.txt zamiast po prostu filename. Spróbować . To działa .

Jeff Byington
źródło
Będzie rozdzielany spacjami zamiast tabulatorami, a kolumny wydają się mieć domyślnie ograniczoną szerokość do około 8 znaków.
JosiahYoder-deactive, z wyjątkiem ..
To nie działa, jeśli komórki zawierają coś podobnego "A short sentence". Poniższa odpowiedź Pete'a była dla mnie jedyna.
Micah Lindström
2

Zapisywanie do Unicode zdawało się dodawać cudzysłowy, nawet jeśli w moim ciągu nie było żadnych cudzysłowów. Oto jak sobie z tym poradziłem:

  1. Znajdź ciąg, którego nie ma w twoim pliku (użyłem xxx).
  2. Przed eksportem, Znajdź i Zastąp wszystkie cudzysłowów "zxxx
  3. Wyeksportuj plik do txt lub csv.
  4. Otwórz pliki txt i znajdź i zamień wszystkie cytaty na nic
  5. Znajdź i zamień wszystko na xxxcytaty
Pete
źródło
Uwaga: replacementnie używaj 'replacement'. Zastąpienie podwójnych cudzysłowów czymś, w tym pojedynczym cudzysłowiem, powoduje problemy, jeśli zdarzy się na początku komórki. Zasadniczo Excel widzi pojedynczy cytat na początku komórki, co oznacza interpretację go jako tekst, więc jest usuwany podczas eksportowania do txt / csv. Dowiedziałem się tego na własnej skórze, lol.
Micah Lindström
0

Wystarczy łatwo zapisać plik jako delimited.prn w programie Excel, a następnie zmienić jego nazwę na .txt. Użyłem tego do kryzysu 18000 wierszy. ;)

Salar Lotfee
źródło