Excel CSV-Format Komórki liczbowej

Sporządzam raport jako plik CSV. Kiedy próbuję otworzyć plik w Excelu, zakłada on typ danych na podstawie zawartości komórki i odpowiednio go sformatuje.

Na przykład, jeśli plik CSV zawiera

...,005,...

Następnie Excel pokazuje go jako 5. Czy jest jakiś sposób, aby to obejść i wyświetlić 005?

Wolałbym zrobić coś z samym plikiem, aby użytkownik mógł po prostu dwukrotnie kliknąć plik CSV, aby go otworzyć.

Używam Excela 2003.

Author: JimmyPena, 2008-09-26

16 answers

Nie ma łatwego sposobu kontrolowania formatowania programu Excel podczas otwierania .plik csv. Jednak wymienione poniżej są trzy podejścia, które mogą pomóc.

Moje preferencje to pierwsza opcja.

Opcja 1-Zmiana danych w pliku

Możesz zmienić dane wplik csv w następujący sposób ...,="005",... Zostanie to wyświetlone w programie Excel jako ...,005,...

Excel zachowa dane jako formułę, ale skopiuje kolumnę i użyje wklej specjalne wartości pozbędą się formuły, ale zachowają formatowanie

Opcja 2 {[6] – - sformatuj DANE

Jeśli jest to po prostu problem z formatem i wszystkie dane w tej kolumnie mają długość trzech cyfr. Następnie otwórz dane w programie Excel, a następnie sformatuj kolumnę zawierającą dane w tym niestandardowym formacie 000

Opcja 3 – [6]} - zmień rozszerzenie pliku na .dif (Data interchange format)

Zmień rozszerzenie pliku i użyj Kreatora importu plików aby kontrolować formaty. Pliki zrozszerzenie dif są automatycznie otwierane przez program Excel po dwukrotnym kliknięciu.

krok po kroku:

  • zmień rozszerzenie pliku z .csv do .dif
  • Kliknij dwukrotnie plik, aby otworzyć go w Excelu.
  • zostanie uruchomiony 'Kreator importu plików'.
  • Ustaw "typ pliku" na "rozdzielony" i kliknij przycisk "Dalej".
  • pod ogranicznikami zaznacz "Przecinek" i kliknij "Dalej" guzik.
  • Kliknij każdą kolumnę wyświetlanych danych i wybierz "format danych kolumn". Kolumna o wartości ' 005 'powinna być sformatowana jako 'Text'.
  • Kliknij przycisk Zakończ, plik zostanie otwarty przez program Excel z określonymi formatami.
 109
Author: Robert Mearns,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 21:23:58

Nie używaj CSV, używaj SYLK.
http://en.wikipedia.org/wiki/SYmbolic_LinK_ (SYLK)

Daje znacznie większą kontrolę nad formatowaniem, a Excel nie będzie próbował odgadnąć typu pola, badając zawartość. Wygląda to na trochę skomplikowane, ale można ujść na sucho za pomocą bardzo małego podzbioru.

 27
Author: Mark Ransom,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 02:49:19

To działa dla Microsoft Office 2010, Excel Wersja 14

źle odczytałem preferencje OP " zrobić coś z samym plikiem."Nadal trzymam to dla tych, którzy chcą rozwiązania do sformatowania importu bezpośrednio

  1. otwórz pusty (nowy) plik (Plik -> Nowy ze skoroszytu)
  2. otwórz Kreator importu (dane -> z tekstu)
  3. Wybierz swój .plik csv i Import
  4. w oknie dialogowym wybierz "rozdzielone" i kliknij Następny.
  5. Wybierz ograniczniki (odznacz wszystko oprócz przecinka), wybierz kwalifikatory tekstu( prawdopodobnie {brak}), kliknij Dalej
  6. w polu podgląd danych wybierz kolumnę, która ma być tekstem. To powinno podkreślać.
  7. w polu Format danych kolumny wybierz "tekst".
  8. kliknij Zakończ.
 14
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-14 20:20:19

Możesz po prostu sformatować swój zakres jako tekst.

Również tutaj {[4] } jest ładny artykuł na temat formatów liczb i jak można je zaprogramować.

 2
Author: Ólafur Waage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 02:10:23

Faktycznie odkryłem, że przynajmniej począwszy od Office 2003, można zapisać arkusz kalkulacyjny Excel jako plik XML. W ten sposób mogę stworzyć plik XML i po dwukrotnym kliknięciu na niego zostanie on otwarty w Excelu. Zapewnia ten sam poziom kontroli co SYLK, ale składnia XML jest bardziej intuicyjna.

 2
Author: Sergey Stadnik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 04:29:50

Dodanie niełamliwej przestrzeni w komórce może pomóc. Na przykład: "firstvalue";"secondvalue";"005 ";"othervalue"

Wymusza traktowanie Excela jako tekstu, a spacja nie jest widoczna. W systemie Windows możesz dodać spację bez łamania, wskazując alt + 0160. Zobacz tutaj, aby uzyskać więcej informacji: http://en.wikipedia.org/wiki/Non-breaking_space

Wypróbowany w Excelu 2010. Mam nadzieję, że może to pomóc ludziom, którzy nadal szukają dość właściwego rozwiązania tego problemu.

 2
Author: Kloe2378231,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-09 14:01:04

Miałem ten problem podczas eksportowania danych CSV z kodu C# i rozwiązałem go przez dodanie pierwszych danych zerowych znakiem tabulacji \t, więc dane były interpretowane jako tekst, a nie numeryczne w Excelu (jednak w przeciwieństwie do innych znaków, nie byłoby to widoczne).

Podobało mi się podejście = "001", ale nie pozwoli to na ponowne zaimportowanie eksportowanych danych CSV do mojej aplikacji C# bez usuwania całego tego formatowania z pliku import CSV (zamiast tego po prostu przyciąć import danych).

 2
Author: Richard Pursehouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-24 11:20:38

Wierzę, że podczas importu pliku można wybrać typ kolumny. Niech to będzie tekst zamiast numeru. W tej chwili nie mam przed sobą kopii, aby to sprawdzić.

 1
Author: Harley Holcombe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 02:10:34

Załaduj plik csv do oleDB i Wymuś wszystkie wnioskowane typy danych na string

Zadałem to samo pytanie, a potem odpowiedziałem kodem.

Zasadniczo po załadowaniu pliku csv sterownik oledb tworzy założenia, możesz mu powiedzieć, jakie założenia należy wykonać.

Mój kod wymusza jednak wszystkie typy danych na string ... jego bardzo łatwo zmienić schemat. do moich celów użyłem xslt, aby uzyskać ti tak, jak chciałem - ale parsuję szeroką gamę plików.

 1
Author: John Nicholas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:33

Wiem, że to stare pytanie, ale mam rozwiązanie, którego tu nie ma.

Podczas tworzenia pliku csv dodaj spację po przecinku, ale przed wartością, np. , 005,.

To działało, aby zapobiec automatycznemu formatowaniu daty w programie excel 2007 .

 1
Author: plntxt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-04 19:28:33

Kreator importu tekstu nie działa, gdy importowany plik CSV ma podziały wierszy w komórce. Ta metoda obsługuje ten scenariusz (przynajmniej z danymi rozdzielonymi tabulatorami):

  1. Utwórz nowy plik Excel
  2. Ctrl + A, aby zaznaczyć wszystkie komórki
  3. w formacie liczbowym combobox, wybierz Tekst
  4. Otwórz plik rozdzielany tabulatorami w edytorze tekstu
  5. Zaznacz wszystkie, skopiuj i wklej do Excela
 1
Author: Pickles,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-06 15:18:24

To doprowadza mnie do szału cały dzień (ponieważ rzeczywiście nie można kontrolować typów kolumn Excela przed otwarciem pliku CSV), i to działało dla mnie, za pomocą VB.NET i Excel Interop:

        'Convert .csv file to .txt file.
        FileName = ConvertToText(FileName)

        Dim ColumnTypes(,) As Integer = New Integer(,) {{1, xlTextFormat}, _
                                                        {2, xlTextFormat}, _
                                                        {3, xlGeneralFormat}, _
                                                        {4, xlGeneralFormat}, _
                                                        {5, xlGeneralFormat}, _
                                                        {6, xlGeneralFormat}}

        'We are using OpenText() in order to specify the column types.
        mxlApp.Workbooks.OpenText(FileName, , , Excel.XlTextParsingType.xlDelimited, , , True, , True, , , , ColumnTypes)
        mxlWorkBook = mxlApp.ActiveWorkbook
        mxlWorkSheet = CType(mxlApp.ActiveSheet, Excel.Worksheet)


Private Function ConvertToText(ByVal FileName As String) As String
    'Convert the .csv file to a .txt file.
    'If the file is a text file, we can specify the column types.
    'Otherwise, the Codes are first converted to numbers, which loses trailing zeros.

    Try
        Dim MyReader As New StreamReader(FileName)
        Dim NewFileName As String = FileName.Replace(".CSV", ".TXT")
        Dim MyWriter As New StreamWriter(NewFileName, False)
        Dim strLine As String

        Do While Not MyReader.EndOfStream
            strLine = MyReader.ReadLine
            MyWriter.WriteLine(strLine)
        Loop

        MyReader.Close()
        MyReader.Dispose()
        MyWriter.Close()
        MyWriter.Dispose()

        Return NewFileName
    Catch ex As Exception
        MsgBox(ex.Message)
        Return ""
    End Try

End Function
 1
Author: Ellen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-27 18:03:22

Podczas otwierania pliku CSV, pojawia się Kreator importu tekstu. W ostatnim kroku kreatora powinieneś być w stanie zaimportować określoną kolumnę jako tekst, zachowując w ten sposób prefiks '00'. Następnie możesz sformatować komórkę w dowolny sposób.

Próbowałem z Excel 2007 i okazało się, że działa.

 0
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-26 02:12:55

Cóż, excel nigdy nie wyskakuje kreator dla plików CSV. Jeśli zmienisz nazwę na .txt, zobaczysz Kreator, gdy następnym razem wykonasz Plik > Otwórz w Excelu.

 0
Author: Narayanan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-30 19:14:18

Umieść pojedynczy cytat przed polem. Excel będzie traktował go jako tekst, nawet jeśli wygląda jak liczba.

...,`005,...

EDIT: to jest złe. Sztuczka z apostrofem działa tylko przy wprowadzaniu danych bezpośrednio do programu Excel. Gdy używasz go w pliku CSV, apostrof pojawia się w polu, którego nie chcesz.

Http://support.microsoft.com/kb/214233

 0
Author: JW.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-10-14 20:14:04

Wystarczy dodać ' przed numerem w dokumencie CSV.

 0
Author: MNassar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-19 11:17:44