Tworzę raport jako plik CSV. Kiedy próbuję otworzyć plik w programie Excel, zakłada on typ danych na podstawie zawartości komórki i odpowiednio go formatuje.
Na przykład, jeśli plik CSV zawiera
...,005,...
Następnie Excel pokazuje to jako 5. Czy istnieje sposób na zastąpienie tego i wyświetlenie 005?
Wolałbym coś zrobić z samym plikiem, aby użytkownik mógł po prostu dwukrotnie kliknąć plik CSV, aby go otworzyć.
Używam programu Excel 2003.
excel
csv
formatting
number-formatting
Sergey Stadnik
źródło
źródło
Odpowiedzi:
Nie ma łatwego sposobu kontrolowania formatowania stosowanego przez program Excel podczas otwierania pliku .csv. Jednak poniżej wymieniono trzy podejścia, które mogą pomóc.
Moja preferencja to pierwsza opcja.
Opcja 1 - Zmień dane w pliku
Możesz zmienić dane w pliku .csv w następujący sposób ..., = "005" , ... Zostanie to wyświetlone w programie Excel jako ..., 005 , ...
Excel zachowa dane jako formułę, ale skopiowanie kolumny i użycie wklejania specjalnych wartości pozbędzie się formuły, ale zachowa formatowanie
Opcja 2 - Sformatuj dane
Jeśli jest to po prostu problem z formatem, a wszystkie dane w tej kolumnie mają trzy cyfry. Następnie otwórz dane w programie Excel, a następnie sformatuj kolumnę zawierającą dane w tym niestandardowym formacie 000
Opcja 3 - Zmień rozszerzenie pliku na .dif (format wymiany danych)
Zmień rozszerzenie pliku i użyj kreatora importu plików, aby kontrolować formaty. Pliki z rozszerzeniem .dif są automatycznie otwierane przez program Excel po dwukrotnym kliknięciu.
Krok po kroku:
źródło
Nie używaj CSV, użyj SYLK.
http://en.wikipedia.org/wiki/SYmbolic_LinK_(SYLK)
Daje znacznie większą kontrolę nad formatowaniem, a program Excel nie będzie próbował odgadnąć typu pola, sprawdzając zawartość. Wygląda to na nieco skomplikowane, ale możesz uciec przy użyciu bardzo małego podzbioru.
źródło
Działa to w przypadku pakietu Microsoft Office 2010, Excel wersja 14
Błędnie odczytałem preferencję OP, aby „zrobić coś z samym plikiem”. Nadal zachowuję to dla tych, którzy chcą rozwiązania do bezpośredniego formatowania importu
źródło
Możesz po prostu sformatować swój zakres jako tekst.
Również tutaj jest fajny artykuł na temat formatów liczb i tego, jak je zaprogramować.
źródło
Właściwie odkryłem, że przynajmniej zaczynając od Office 2003, możesz zapisać arkusz kalkulacyjny Excela jako plik XML. W ten sposób mogę utworzyć plik XML, a po dwukrotnym kliknięciu zostanie on otwarty w programie Excel. Zapewnia ten sam poziom kontroli co SYLK, ale składnia XML jest bardziej intuicyjna.
źródło
Pomocne może być dodanie niełamującej przestrzeni w komórce. Na przykład:
"firstvalue";"secondvalue";"005 ";"othervalue"
Zmusza program Excel do traktowania go jako tekstu, a spacja nie jest widoczna. W systemie Windows możesz dodać niezłamującą spację, przechylając alt + 0160. Więcej informacji można znaleźć tutaj: http://en.wikipedia.org/wiki/Non-breaking_space
Wypróbowano w programie Excel 2010. Mam nadzieję, że może to pomóc osobom, które nadal szukają całkiem odpowiedniego rozwiązania tego problemu.
źródło
Miałem ten problem podczas eksportowania danych CSV z kodu C # i rozwiązałem go, dodając początkowe dane zerowe znakiem tabulacji \ t, więc dane zostały zinterpretowane jako tekst, a nie numeryczne w programie Excel (ale w przeciwieństwie do poprzedzania innych znaków, nie nie widać).
Podobało mi się podejście = "001", ale nie pozwoliłoby to na ponowne zaimportowanie wyeksportowanych danych CSV do mojej aplikacji C # bez usuwania całego tego formatowania z importowanego pliku CSV (zamiast tego po prostu przycinam dane importu) .
źródło
Myślę, że kiedy importujesz plik, możesz wybrać typ kolumny. Ustaw jako tekst zamiast liczby. W tej chwili nie mam jednak przed sobą kopii do sprawdzenia.
źródło
Załaduj csv do oleDB i wymuś wszystkie wywnioskowane typy danych na łańcuch
zadałem to samo pytanie, a następnie odpowiedziałem kodem.
w zasadzie po załadowaniu pliku csv sterownik oledb przyjmuje pewne założenia, możesz mu powiedzieć, jakie założenia przyjąć.
Mój kod wymusza jednak na wszystkich typach danych łańcuchowe ... bardzo łatwo jest zmienić schemat. do moich celów użyłem xslt, aby uzyskać ti tak, jak chciałem - ale analizuję wiele różnych plików.
źródło
Wiem, że to stare pytanie, ale mam rozwiązanie, którego nie ma na liście.
Kiedy tworzysz csv, dodaj spację po przecinku, ale przed wartością, np
, 005,
.To i tak zapobiegło automatycznemu formatowaniu daty w programie Excel 2007.
źródło
Metoda Kreatora 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 rozdzielanymi tabulatorami):
źródło
Po prostu dodaj „przed numerem w dokumencie CSV.
źródło
To doprowadzało mnie do szaleństwa przez cały dzień (ponieważ rzeczywiście nie możesz kontrolować typów kolumn programu Excel przed otwarciem pliku CSV) i to zadziałało dla mnie, używając 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
źródło
Podczas otwierania pliku CSV pojawia się kreator importu tekstu. Na ostatnim etapie 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 programem Excel 2007 i okazało się, że działa.
źródło
Cóż, program Excel nigdy nie wyświetla kreatora plików CSV. Jeśli zmienisz nazwę na .txt, zobaczysz kreatora, gdy następnym razem wykonasz polecenie Plik> Otwórz w programie Excel.
źródło
Umieść pojedynczy cytat przed polem. Excel potraktuje go jako tekst, nawet jeśli wygląda jak liczba.
EDYCJA: to źle. Sztuczka z apostrofem działa tylko podczas wprowadzania danych bezpośrednio do programu Excel. Kiedy używasz go w pliku CSV, apostrof pojawia się w polu, którego nie chcesz.
http://support.microsoft.com/kb/214233
źródło