Jak zmusić program Excel do cytowania wszystkich kolumn pliku CSV?

89

Excel umieszcza cudzysłowy tylko w niektórych polach. Jak zmusić program Excel do zapisania pliku CSV z cudzysłowami wokół każdej kolumny?

Michael Shnitzer
źródło

Odpowiedzi:

44

Jeśli otworzysz plik XLS w LibreOffice lub OpenOffice, a następnie Zapisz jako .... i wybierz Tekst CSV, pozwoli to wygenerować plik CSV, który zawiera również cudzysłowy jako ograniczniki. Np .: „Smith”, „Pete”, „Canada” „Jones”, „Mary”, „England”

Wystarczy zaznaczyć pole „Cytuj wszystkie komórki tekstowe”: Eksportuj do CSV za pomocą LibreOffice

Aby cytować również pola numeryczne, zaznacz zakres komórek i zmień formatowanie komórki na „tekst” przed zapisaniem.

Pete
źródło
7
Chociaż nie jest to odpowiedź na konkretne pytanie, jest to prostsze obejście niż próba zmuszenia moich klientów do korzystania z makra!
Duncanmoo,
Mam dość codziennego używania tej metody, dlatego tu jestem
vladkras,
Myślę, że jest to najłatwiejsze i najwygodniejsze rozwiązanie, ponieważ OpenOffice to przenośne oprogramowanie. Nie musisz niczego instalować ani pisać żadnych kodów.
Scott Chu,
najlepsza odpowiedź w historii !!
rajya vardhan
20
W ogóle nie ma odpowiedzi. Pytanie dotyczy wyraźnie MS Excel
vladkras,
43

Ta strona zawiera również rozwiązanie, które pochodzi prosto z pyska konia:

http://support.microsoft.com/kb/291296/en-us

Jeśli link się pogarsza, tematem do wyszukiwania jest:

„Procedura eksportowania pliku tekstowego z ogranicznikami przecinkowymi i cudzysłowami w programie Excel” i / lub „Q291296”

tl; dr: użyj ich makra

sahmeepee
źródło
10
Warto zauważyć, że makro używa liczb całkowitych do wartości wierszy i kolumn. Otrzymasz błąd przy próbie wyeksportowania więcej niż 32768 wierszy. Na przykład zmiana typów danych na Long rozwiąże ten problem.
Dan
Dobre miejsce (+1). Wygląda na to, że nie zaktualizowali kodu, odkąd został napisany dla wersji programu Excel z maksymalnie 32768 wierszami.
sahmeepee
9
Za pomocą tego makra mogłem stworzyć istotę i kilka poprawek: gist.github.com/fabriceleal/7803969
fableal
@fableal Great snippet! Zasługuje na odpowiedź.
xiankai
Office 2010 nadal przepełnia się dużą liczbą wybranych wierszy, tak jak wspomniano w @sahmeepee.
access_granted
18

Znalazłem to łatwe rozwiązanie:

  1. Zaznacz komórki, które chcesz dodać cytaty.
  2. Kliknij prawym przyciskiem myszy i przejdź do: Formatuj komórki → Karta: Liczba → Kategoria: Niestandardowa
  3. Wklej następujące elementy w polu Typ : "''"@"''"(patrz szczegóły poniżej)
  4. Kliknij „OK”

Wklejany ciąg "''"@"''"to podwójny cytat, pojedynczy cytat, pojedynczy cytat, podwójny cytat, symbol @, podwójny cytat, pojedynczy cytat, pojedynczy cytat, podwójny cytat.

Edytowane dla programu Excel 2010 na podstawie informacji tutaj znalezionych .

Michael
źródło
Hmmm… to dało mi „POZYCJA” (dwa pojedyncze cytaty) zamiast „(jeden podwójny cytat). Właśnie wtedy przeprowadziłem wyszukiwanie i zastąpiłem je, aby to naprawić.
Clay Nichols
6
Format powinien był być \ ”@ \”
manat
Ta odpowiedź była właściwie idealną odpowiedzią, jeśli korzystasz z LibreOffice - całkowicie brakuje jej opcji „tekstowej” w menu Format> Format liczb, mimo że dokumentacja twierdzi, że opcja jest dostępna. Po kliknięciu prawym przyciskiem myszy „Formatuj komórki” w LibreOffice, pojawi się PEŁNA lista opcji interpretacji komórek - zamiast nieco niepotrzebnych 6 opcji przedstawionych w menu rozwijanym.
1owk3y
Odpowiedź @ manata, ale bez nawiasów:\"@\"
MSC
12

Wygląda na to, że PowerShell zrzuca poprawnie. więc coś w stylu

wyszukaj PowerShell.exe na komputerze z systemem Windows, jeśli nie znasz PowerShell.

import-csv C:\Temp\Myfile.csv | export-csv C:\Temp\Myfile_New.csv -NoTypeInformation -Encoding UTF8

Mam nadzieję, że to komuś pomaga.

ssaviers
źródło
Dla wygody Shift + kliknij prawym przyciskiem myszy folder, w którym zapisany jest plik CSV, i wybierz tutaj Otwórz okno PowerShell , co upraszcza polecenie import-csv Myfile.csv | export-csv Myfile_quoted.csv -NoTypeInformation -Encoding UTF8. pamiętaj, aby używać pojedynczych cudzysłowów wokół nazw plików ze spacjami lub innymi znakami specjalnymi.
Walf
4

To było dla mnie najłatwiejsze: zaimportowałem arkusz kalkulacyjny do programu Access 2010 i wyeksportowałem go stamtąd jako plik tekstowy z ogranicznikami. Daj mi znaki cudzysłowu wokół moich pól. Teraz, gdy mam kroki w dół, zajmuje mniej niż minutę dla 42 tys. Rzędów.

użytkownik326114
źródło
Jedyną wadą byłoby to, że samo pole zawiera podwójny cudzysłów.
access_granted
3

Znalazłem inną pracę, która nie dotyczy Makra VBA, ale która wymaga Notepad ++ lub podobnego edytora tekstowego opartego na makrach.

Wyeksportuj plik jako tekst rozdzielany tabulatorami, a następnie otwórz eksportowany plik w Notepad ++. Zamień wszystkie wystąpienia znaku „tab” na tekst „,” (tzn. Dosłownie podwójny cudzysłów, przecinek, podwójny cudzysłów), a następnie użyj innego makra do prefiksu i sufiksu każdego wiersza tekstu podwójnym cudzysłowiem.

Trochę hacky, ale znalazłem to szybciej niż uruchomienie makra VBA.

Blueacid
źródło
1
Jeśli chcesz to zrobić w Notepad ++, najlepiej byłoby użyć wyszukiwania wyrażeń regularnych i zamiany, a następnie możesz wykonać wszystkie 3 operacje zamiany (początek wiersza, tabulator i koniec wiersza) w jednym miejscu
sahmeepee
3

Zaznacz komórki, które chcesz dodać cytaty. Idź do Format -> Komórki -> Niestandardowe Kopiuj / Wklej następujące w polu Typ: \ ”@ \” Kliknij „OK” Ciesz się, że nie zrobiłeś tego wszystkiego ręcznie.

Od: http://www.lenashore.com/2012/04/how-to-add-quotes-to-your-cells-in-excel-automatically/

Steve Coleman
źródło
1
Działa to dobrze w przypadku alfa - będziesz potrzebować \ ”# \” dla kolumn z wartościami liczbowymi.
DropHit,
Działa to między \ "@ \" i \ "# \". Ale nadal muszę edytować nagłówki w Notepad ++ dla kolumn numerycznych, a następnie zastąpić wszystkie „” „”. Co za ból.
Gary,
Nie próbowałem tego ... ale jeśli tworzysz plik csv, nie możesz po prostu zmienić kolumn na tekst i użyć \ "@ \"
Steve Coleman
2
  1. Zaznacz komórki, które chcesz dodać cytaty.
  2. Kliknij prawym przyciskiem myszy i przejdź do: Formatuj komórki → Karta: Liczba → Kategoria: Niestandardowa
  3. Wklej następujące elementy w polu Typ: "''"@"''"(patrz szczegóły poniżej)
  4. Kliknij „OK”
  5. Otwórz plik .csv za pomocą Notatnika (lub odpowiednika)
  6. Zamień wszystkie ' '(powtarzające się pojedyncze cytaty) na "(podwójny cytat)
  7. Zamień wszystko ;
  8. Zapisz poprawiony plik .csv
eric
źródło
1

Jeśli używasz Notepad ++ do dodawania cudzysłowów na początku każdej linii, po prostu otwórz wyeksportowany plik csv, umieść kursor w 1. linii, 1. kolumnie, a następnie kliknij menu Edytuj / Edytor kolumn ... , w polu „ Tekst do wstawienia ”, enter , wtedy na początku każdego wiersza będzie cytat, następnie możesz użyć wyrażenia regularnego, aby wyszukać / zamienić wszystkie zakładki.

Michael Zhang
źródło
0

Dla użytkowników systemu Windows

  1. „Zapisz jako” plik Excel jako CSV
  2. Otwórz zapisany plik za pomocą arkusza kalkulacyjnego Mircrosoft Works
  3. „Zapisz jako” arkusz kalkulacyjny jako CSV
  4. Wszystkie pola nienumeryczne mają teraz „wokół siebie”

Zauważ, że to nie jest ten sam cytat na klawiaturze, który ma odmianę do przodu i do tyłu.
Więc jeśli używasz CSV do załadowania do tabeli Mysql, wytnij i wklej do parametru ENCLOSED, w przeciwnym razie będziesz się zastanawiać, dlaczego otrzymujesz wiadomość#1083 - Field separator argument is not what is expected

Greg
źródło
3
Mircrosoft działa <-? Jesteś pewien?
nixda
0

Zastosowałem poniższe podejście, aby pobrać trzy kolumny w programie Excel i zbudować ciąg w czwartej kolumnie.

=CHAR(34)&A2&CHAR(34)&","&CHAR(34)&B2&CHAR(34)&","&CHAR(34)&C2&CHAR(34)&""

Moim problemem z "''"@"''"podejściem jest to, że druga kolumna moich danych była liczbą, w której "''"@"''"podejście nic nie dało z liczbami. Czasami druga kolumna jest pusta, ale musiałem się upewnić, że jest reprezentowana w końcowym pliku tekstowym.

użytkownik415149
źródło
0

Innym sposobem, jeśli masz dostęp do MS (mam wersję 2007), zaimportuj plik, a następnie wyeksportuj go jako plik tekstowy. Następnie zmień .txt na .csv. Uwaga: wszystkie pola liczbowe nie będą zawierać podwójnych cudzysłowów, więc jeśli potrzebujesz podwójnych cudzysłowów wokół liczb, wówczas w programie Access zmień pole z pola liczbowego na pole tekstowe.

Dziekan
źródło
0

Eksportowanie ciągów oddzielonych przecinkami i cudzysłowów można wykonać tylko w programie Excel 2016 i Notatniku, używając kopii danych, formuły, eksportu, zmiany właściwości pliku, zamiany w Notatniku, zapisując wyeksportowany plik i czyszczenie. Każdy z nich jest prostym krokiem. Szczegółowo:

  1. Skopiuj kolumny do wyeksportowania do nowego arkusza pośredniego, aby zachować oryginał i kopię zapasową, a nowy arkusz należy usunąć później, aby pozostawić arkusz kalkulacyjny bez zmian.

  2. Umieść inaczej nie występujące znaki, powiedz „#” lub „;-)” na każdym końcu ciągu w kolumnie powiedz A z formułą =concat("#",trim(A1),"#"), umieszczając formułę na wszystkich wierszach innej kolumny.

    • Sąsiednie kolumny można wykonać w tym samym czasie, ale nie należy podawać liczb, aby uniknąć wczytywania ich jako ciągów.
    • Wykończenie pozwala uniknąć spacji końcowych, które mogą powodować nieumiejętne zachowanie eksportu.
    • Ciągi nie powinny zawierać „”, które może zakłócać import.
  3. Skopiuj nowe kolumny z powrotem nad A ..., używając metody „123”, aby nie przenosić formuły.

  4. Wyeksportuj arkusz jako plik CSV, aby wstawić przecinki między polami, w tym liczbami.

  5. Zmień właściwości file.csv, aby można je było otworzyć za pomocą Notatnika.

  6. Użyj Notatnika, aby zamienić dowolne znaki na „” ”.

  7. Chociaż użycie „jako arbitralnego charakteru wydaje się rozsądne, należy go umieścić w innej komórce, powiedz„ 50 A $ 50 ”, a następnie to, co pojawia się podczas eksportu, to„ ”„ ”, najwyraźniej kolejny niewygodny czynnik uruchamiający.

  8. W notatniku plik należy zapisać, stając się plikiem * .txt do zaimportowania, a plik pośredni * .csv usunąć.

  9. Po wyczyszczeniu dodatkowej misji arkusza kalkulacyjnego zakończona.

Być może narzędzia eksportu Access mogą pewnego dnia zostać osadzone w programie Excel. Bardziej ogólne podejście wśród programów używających wycinania i wklejania polega na tym, że opcje wklejania obejmują wybór sposobów interpretacji struktury wyjściowej i zapewnienia ograniczników.

HGB
źródło
0

Odpowiedź Michaela z 21 sierpnia 2014 roku jest naprawdę pomocna. Musiałem jednak wykonać dodatkowy krok lub dwa:

  1. Otwórz plik .csv za pomocą Notatnika (lub odpowiednika)
  2. Zamień wszystkie „” (powtarzane pojedyncze cudzysłowy) na „(podwójny cytat)
  3. Zamień wszystko ; (używany jako separator w niemieckiej wersji Excela) z,
  4. Zapisz poprawiony plik .csv
CVn
źródło
Brak wyjaśnienia dla downbvote? Równy kurs, ale jak inni mają się uczyć? TY może pomyśleć, że oczywiste, co jest nie tak, panie Downvoter, ale to może nie być oczywiste dla każdego. Staramy się tutaj zbudować społeczność, a ty nie pomagasz.
Mawg
-1

To jest mój przepis. Nienawidzę tego robić, ale nie miałem lepszego sposobu. W moim przypadku nie otrzymuję cytatów w żadnym polu. Musiałem także użyć kodowania UTF-8 i; zamiast kart, więc to właśnie skończyłem.

UWAGA: z powodu nieczytelności umieszczania podwójnych cudzysłowów w pojedynczych cudzysłowach i tak dalej, celowo użyłem „formatowania klawiatury” do wskazania zarówno naciśnięć klawiszy, jak i literalnych znaków i ciągów.

  1. Wstaw nową kolumnę przed jakąkolwiek inną w arkuszu kalkulacyjnym Excel (kliknij tytuł pierwszej kolumny, cała kolumna zostanie wybrana, kliknij prawym przyciskiem myszy, wybierz „wstaw”).
  2. Wybierz cały zakres pustych komórek z nowej kolumny (są one domyślnie zaznaczone). W polu formuły wstaw wszystko, co chcesz: na przykład xxx. Naciśnij CTRL+, enteraby wypełnić całą kolumnę tą samą wartością.
  3. Zapisz plik jako tekst Unicode (* .txt).
  4. Otwórz plik w Notepad ++.
  5. Naciśnij CTRL+, faby otworzyć Wyszukaj / Zamień.
  6. Przejdź do zakładki Zamień.
  7. W „Trybie wyszukiwania” wybierz „Rozszerzone (\ n, \ r, \ t, \ 0, \ x ...)”.
  8. W polu „Szukaj” wpisz xxxplus tabnaciśnięcie klawisza.
  9. W polu „Zamień” wpisz "(podwójny cudzysłów).
  10. Naciśnij Zamień wszystko.
  11. W polu „Wyszukaj” wprowadź tabnaciśnięcie klawisza.
  12. W polu „Zamień” wpisz ";"(podwójny cudzysłów, średnik, podwójny cudzysłów).
  13. Naciśnij Zamień wszystko.
  14. Jesteś prawie gotowy. W przypadku ostatniego podwójnego cytatu wpisz \rw polu „Szukaj” i "\r"(podwójny cytat, ukośnik odwrotny, podwójny cytat) w polu „Zamień”. Naciśnij Zamień wszystko.
  15. Dopóki nie używasz chińskiego znaku itp., Możesz zmienić kodowanie na UTF-8 i bezpiecznie zapisać plik.
Pere
źródło
-1

Wiele razy napotkałem ten problem. Oto najprostsze rozwiązanie, jakie wymyśliłem.

  1. Zapisz plik jako Excel
  2. Zaimportuj program Excel do tabeli dostępu
  3. Wyeksportuj tabelę z programu Access do pliku tekstowego.

Access pozwoli ci określić ogranicznik eksportu jako przecinek i kwalifikujące się pola tekstowe z cudzysłowami. W kreatorze eksportu możesz określić dowolny separator lub znak wokół ciągów, które chcesz.

Konieczne może być utworzenie zapytania Access w celu uporządkowania pól w określonej kolejności lub ukrycie pola automatycznego identyfikatora dodanego przez Access.

Ponadto ... po wyeksportowaniu do pliku CSV NIE otwieraj go ponownie w programie Excel. Jeśli chcesz spojrzeć na wyniki, otwórz je w notatniku. Excel ma tendencję do bałagania z danymi pliku csv ... Myślę, że jeśli poprawnie pamiętam, to były pola wypełnione zerami wiodącymi.

Gunther
źródło
To zdaje się powielać informacje zawarte w odpowiedzi user326114.
fixer1234
-1

Oto jak użyć aplikacji OpenOffice do pobrania arkusza kalkulacyjnego Excel i utworzenia pliku tekstowego (csv) ze znakami cudzysłowu wokół każdego pola tekstowego.

Otwórz plik Excel za pomocą OpenOffice, a następnie wykonaj następujące kroki:

Plik> Zapisz jako

Podaj nową nazwę pliku, który chcesz utworzyć

W polu Typ pliku wybierz „Test CSV (.csv)”

włącz pole wyboru „Edytuj ustawienia filtra”

kliknij „Zapisz”

wybierz „Zachowaj bieżący format”

Separator pola powinien być przecinkiem:,

Separator tekstu powinien zawierać cudzysłów: „

zaznacz pole „Cytuj wszystkie komórki tekstowe”

Kliknij OK"

To zadziałało dla mnie!

Mary H.
źródło