Jak zapisać arkusz kalkulacyjny programu Excel jako plik wartości oddzielonych średnikiem?

31

Korzystam z programu Excel i chciałbym wyeksportować plik jako arkusz .scsv (wartości rozdzielone średnikiem) zamiast .csv. Czy jest na to jakiś sposób?

ps. Nie mogę wykonać pliku .csv ani wyszukiwać i zastępować przecinków średnikami, ponieważ pola już zawierają przecinki.

Kamilski81
źródło
Jeśli jesteś otwarty na trochę programowania, konwerter można dość łatwo napisać w języku programowania Python za pomocą jego wbudowanego csvmodułu, który ułatwiłby czytanie plików Excel .csv, a następnie pisanie nowych wersji, które właśnie miały o dowolnym ograniczniku, który chcesz.
martineau,
To zależy, czy we wpisach są przecinki, czy nie.
AER,

Odpowiedzi:

20

Co powiesz na robienie rozdzielania tabulatorami i zastępowanie tabulatorów średnikami?

W programie Excel: Plik -> Zapisz jako -> w formacie wybierz „Tekst rozdzielany tabulatorami (.txt)”, a następnie jego zapis.

Otwórz plik w notatniku i otwórz okno zastępowania. Ponieważ nie możesz wstawiać tabulatorów bezpośrednio do tego okna, skopiuj tabulator z dokumentu, a następnie wklej go w polu Znajdź i umieść; w polu wymiany. Następnie wymień wszystko.

Zakładam, że to zadziałałoby, ponieważ bardzo rzadko ma się zakładki w dokumencie programu Excel.

Robert
źródło
Chociaż może być podstawowym dla większości użytkowników, czy możesz również podać zestaw instrukcji?
Kanadyjczyk Luke REINSTATE MONICA
Czy można to zrobić całkowicie w programie Excel, a jeśli tak, to w jaki sposób?
martineau,
Nie sądzę, że można to zrobić całkowicie w programie Excel. Excel ukrywa formatowanie (tabulatory), więc nie będzie można ich zastąpić. Po zastąpieniu ich średnikami nie byłbyś również w stanie otworzyć się za pomocą programu Excel (byłaby to tylko jedna gigantyczna komórka)
Robert,
Zakładam, że użycie wyrażenia regularnego do zamiany i umieszczenia \tbędzie działać
Yassin Hajaj,
Jeśli w pliku znajdują się znaki specjalne w innym języku (np. Greckim), nie działa to, ponieważ symbole znaków są zastępowane przez „?”
Joos
8

Nie sądzę, że można ustawić separator wyjściowy bezpośrednio w programie Excel, ale (przy założeniu systemu Windows) można zmienić separator listy systemów operacyjnych na ;- gotowe Regional Settings->Customize. Excel użyje tego ustawienia do generowania plików csv.

wmz
źródło
5
Ważna uwaga: jeśli to zrobisz, wszystkie programy systemu Windows korzystające z międzynarodowych bibliotek systemu Windows przyjmą to; jest znakiem separatora dla wszystkich plików CSV. Jeśli jest to rozwiązanie jednorazowe, prawdopodobnie bardziej sensowne jest zapisanie zwykłego pliku CSV i użycie edytora do zmiany przecinków na średniki
Isaac Rabinovitch
Ta zmiana wpłynie również na otwieranie plików CSV w programie Excel. Jak wspomniano w komentarzu powyżej, być może więcej programów. Jeśli chcesz utworzyć bardziej zgodny plik CSV, umieść go sep=;na wierzchu pliku CSV, a następnie po zapisaniu pliku możesz zmienić List Separator z powrotem na cokolwiek to było.
papo
7

Użyj LibreOffice Calc (jest to darmowe pobieranie i działa na wszystkich głównych systemach operacyjnych).

Aby zapisać wartości oddzielone średnikiem:

  1. Otwórz plik xlsx / csv
  2. Plik -> Zapisz jako ...
  3. Wybierz „Filtruj CSV” jako filtr (powinien być domyślny, jeśli nazwa pliku kończy się na .csv)
  4. Zaznacz „Edytuj ustawienia filtra” i naciśnij Zapisz
  5. Gdy pojawi się monit o potwierdzenie formatu pliku, naciśnij „Użyj formatu tekstowego CSV”
  6. Zmień „Ogranicznik pola” na średnik (możesz wpisać tutaj cokolwiek).
  7. Wciśnij OK.

LO Calc poprawnie obsługuje przecinki i średniki w wartościach komórek.

naught101
źródło
1
Dziękuję, działa dobrze. To powinna być zaakceptowana odpowiedź.
Ortomala Lokni
4

Jeśli chcesz skrypt, wklej następujące elementy w module.

Option Explicit
Sub export2scsv()
    Dim lastColumn As Integer
    Dim lastRow As Integer
    Dim strString As String
    Dim i As Integer, j As Integer

    lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
    lastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

    Open "output.scsv" For Output As #1

    For i = 1 To lastRow
        Cells(i, 1).Select
        strString = ""
        For j = 1 To lastColumn
            If j <> lastColumn Then
                strString = strString & Cells(i, j).Value & ";" ' Use semicolon instead of pipe.
            Else
                strString = strString & Cells(i, j).Value
            End If
        Next j
        Print #1, strString
    Next i

    Close #1
End Sub
użytkownik157938
źródło
4

Aby zmienić przecinek na średnik jako domyślny separator Excela dla CSV - przejdź do Region -> Ustawienia dodatkowe -> zakładka Liczby -> Separator list i typ; zamiast domyślnego

Michał
źródło
3

Możesz zmienić separator globalnie poprzez Dostosuj format.

Przejdź do Region i język, otwórz Region, w formatach kart kliknij przycisk Dodatkowe ustawienia, aw zakładkach Numery zmień wartość separatora list:

Opłata za Świętego Mikołaja
źródło
Nie zamieszczaj tylko linku do odpowiedzi, dołącz do niej najistotniejsze szczegóły. Jeśli strona docelowa zniknie, odpowiedź jest bezużyteczna. Ponadto, chociaż nie jestem ekspertem od systemu Windows, wygląda to tak samo jak odpowiedź wmz sprzed trzech lat.
blm
0

1.> Zmień format pliku na .CSV (rozdzielany średnikami)

Aby osiągnąć pożądany wynik, musimy tymczasowo zmienić ustawienie separatora w Opcjach programu Excel.

Przejdź do Plik -> Opcje -> Zaawansowane -> Sekcja edycji

Odznacz ustawienie „Użyj separatorów systemowych” i wstaw przecinek w polu „Separator dziesiętny”.

Teraz zapisz plik w formacie .CSV, a zostanie zapisany w formacie rozdzielanym średnikami !!!

użytkownik318853
źródło
5
Zaczerpnięte z ashwaniashwin.wordpress.com/2013/04/19/… Należy pamiętać, że podanie danych jest wymagane.
Arjan
0

Jeśli lista wartości znajduje się w kolumnie A, spróbuj tego - Komórka B2 = A1 & ";" & A2 Komórka B3 = B2 & ";" & A3 Skopiuj komórkę B3 na dół listy. Jeśli skopiujesz i wkleisz ostatnią komórkę na liście jako wartości, będziesz mieć listę oddzieloną średnikami. Następnie możesz skopiować to do Notatnika, Worda lub gdziekolwiek chcesz.

Guziec
źródło
0

Możesz to zrobić w 4 krokach dzięki funkcji konkatenacji programu Excel.

  1. W swoim pliku dodaj kolumnę znaków średnika, w której spodziewałbyś się, że wylądują one w eksporcie .csv.

  2. Rozpocznij nową kolumnę na końcu danych iw pierwszym rzędzie użyj =concatenate()funkcji. Pamiętaj, aby zaznaczyć wszystkie komórki, które mają pojawić się w końcowym pliku. Twoja formuła będzie wyglądać mniej więcej tak=concatenate(A1,A2,A3...)

  3. Skopiuj i wklej uzyskaną formułę we wszystkich wierszach danych.

  4. Wybierz całą kolumnę formuł i Wklej specjalnie -> Wartości do sąsiedniej kolumny. Teraz wszystkie Twoje dane są rozdzielane średnikami.

Na koniec wyeksportuj do wybranego formatu pliku. Jeśli eksportujesz to jako .txt w systemie Windows, możesz po prostu zmienić rozszerzenie pliku na .csv, ponieważ oba są formatami zwykłego tekstu.

Greg Cavanaugh
źródło
-3

Używam w prosty sposób: -

  1. Otwórz plik csv (średnik) w Notatniku lub Notepad ++.
  2. Znajdź i zamień (Ctrl + H) od średnika (;) do przecinka (,).
  3. Zapisz i zamknij plik.
  4. Teraz otwórz zmodyfikuj plik za pomocą Ms-Excel.
winorośl
źródło
Działa to tylko wtedy, gdy żaden ciąg nie zawiera „;” lub „”, w przeciwnym razie nie wygeneruje tego, czego autor naprawdę chce.
Ramhound,
1
To idzie w złym kierunku. Pytanie dotyczy sposobu utworzenia pliku wartości oddzielonych średnikiem; odpowiedź ta zakłada, że średnik oddziela wartości plik już istnieje i opisuje, jak utworzyć plik CSV - nieprawidłowo, ponieważ nie bierze pod uwagę ograniczenie klucza na pytanie: mianowicie, że dane są znane zawiera ogranicznik .
G-Man mówi „Reinstate Monica”