Zatrzymaj program Excel od automatycznej konwersji niektórych wartości tekstowych na daty

Czy ktoś wie, czy jest token, który mogę dodać do pliku csv dla określonego pola, aby Excel nie próbował przekonwertować go na datę?

Próbuję napisać ... plik csv z mojej aplikacji i jedna z wartości zdarza się wyglądać wystarczająco jak Data, że Excel automatycznie konwertuje go z tekstu na datę. Próbowałem umieścić wszystkie moje pola tekstowe (w tym te, które wyglądają jak data) w podwójnych cudzysłowach, ale to nie ma wpływu.

Author: JimmyPena, 2008-10-03

30 answers

Odkryłem, że umieszczenie " = " przed podwójnymi cudzysłowami osiągnie to, co chcesz. Wymusza to na danych tekst.

Np. ="2008-10-03",="więcej tekstu"

EDIT (zgodnie z innymi postami): ze względu na błąd Excel 2007 zauważony przez Jeffiekinsa należy skorzystać z rozwiązania zaproponowanego przez Andrew: "=""2008-10-03"""

 301
Author: Jarod Elliott,
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:33:26

Wiem, że to stare pytanie, ale problem szybko nie zniknie. Pliki CSV są łatwe do wygenerowania z większości języków programowania, raczej małe, czytelne dla człowieka w chrust z prostym edytorem tekstu i wszechobecne.

Problem polega nie tylko na datach w polach tekstowych, ale każda cyfra jest również konwertowana z tekstu na liczby. Kilka przykładów, gdzie jest to problematyczne:

  • ZIP / kody pocztowe
  • telefon liczby
  • rządowe numery identyfikacyjne

Które czasami mogą zaczynać się od jednego lub więcej zer( 0), które są wyrzucane po konwersji na cyfrę. Albo wartość zawiera znaki, które można pomylić z operatorami matematycznymi (jak w dates:/, -).

Dwa przypadki, które mogę sobie wyobrazić, że rozwiązanie " prepending =", jak wspomniano wcześniej, może nie być idealne jest

  • gdzie plik może zostać zaimportowany do programu innego niż MS Excel (Przychodzi na myśl funkcja Mail Merge w MS Word),
  • gdzie czytelność człowieka może być ważna.

My hack to work around this

Jeśli jeden pre / dopisze do wartości nie-numeryczny i/lub nie-date, wartość zostanie rozpoznana jako tekst i nie zostanie przekonwertowana. Znak niedrukowujący byłby dobry, ponieważ nie zmieni wyświetlanej wartości. Jednak zwykły stary znak spacji (\s, ASCII 32) nie działa w tym przypadku, ponieważ jest odcinany przez Excela, a następnie wartość ciągle się nawraca. Ale istnieją różne inne drukowane i niedrukowujące znaki przestrzeni, które będą działać dobrze. najprostszym jest jednak dodanie (add after) prostego znaku tabulacji (\T, ASCII 9).

Korzyści z tego podejścia:

    [11]} dostępne z klawiatury lub z łatwym do zapamiętania kodem ASCII (9),
  • nie przeszkadza importowi,
  • normalnie nie przeszkadza w wyniku scalania poczty (w zależności od szablonu layout - ale normalnie dodaje tylko szerokie spacje na końcu linii). (Jeśli jest to jednak problem, spójrz na inne znaki, np. spacja o zerowej szerokości (ZWSP, Unicode U+200B)
  • [11]} nie jest dużą przeszkodą podczas przeglądania pliku CSV w Notatniku (etc),
  • i może zostać usunięty przez find / replace w Excelu (lub notatniku itp.).
  • nie musisz importować pliku CSV, ale możesz po prostu dwukrotnie kliknąć, aby otworzyć plik CSV w Excelu.

If there 's a reason you don' t chcesz użyć tej karty, poszukaj w tabeli Unicode czegoś innego.

Inna opcja

Może być generowanie plików XML, dla których określony format jest również akceptowany do importu przez nowsze wersje MS Excel, a co pozwala na dużo więcej opcji podobnych do .Format XLS, ale nie mam z tym doświadczenia.

Więc są różne opcje. W zależności od twoich wymagań/zastosowania, jeden może być lepszy niż kolejny.


Dodatek

Należy powiedzieć, że nowsze wersje (2013+) MS Excel nie otwierają już pliku CSV w formacie arkusza kalkulacyjnego - jeszcze jeden speedbump w swoim przepływie pracy czyniąc Excel mniej użytecznym... Przynajmniej istnieją instrukcje, jak to obejść. Zobacz np. ten Stackoverflow: jak poprawnie wyświetlać .pliki csv w Excelu 2013? .

 113
Author: fr13d,
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
2018-05-25 11:24:37

Wykorzystując rozwiązanie JARODA i problem poruszony przez Jeffiekinsa, możesz zmodyfikować

"May 16, 2011"

Do

"=""May 16, 2011"""
 95
Author: Andrew Ferk,
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-05-16 21:48:35

Miałem podobny problem i jest to obejście, które pomogło mi bez konieczności edycji zawartości pliku csv:

Jeśli masz możliwość nazwania pliku czymś innym niż ".csv", można go nazwać przez".txt "rozszerzenie, takie jak" Myfile.txt " lub " Myfile.csv.txt". Następnie po otwarciu go w Excelu (nie metodą przeciągania i upuszczania, ale za pomocą pliku - > Otwórz lub listy ostatnio używanych plików), Excel dostarczy Ci "Kreator importu tekstu".

Na pierwszej stronie kreatora, wybierz "rozdzielone" dla typu pliku.

Na drugiej stronie kreatora wybierz "," jako ogranicznik, a także wybierz kwalifikator tekstu, jeśli twoje wartości zostały otoczone cudzysłowami

Na trzeciej stronie wybierz każdą kolumnę indywidualnie i przypisz każdemu Typ " tekst "zamiast" ogólne", aby powstrzymać Excel przed mieszaniem się z Twoimi danymi.

Mam nadzieję, że pomoże to tobie lub komuś z podobnym problemem!

 52
Author: rainerbit,
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-02-21 05:06:50

Ostrzeżenie: Excel '07 (przynajmniej) ma (inny) błąd: jeśli w treści pola znajduje się przecinek, nie analizuje on poprawnie = "pole, zawartość", ale raczej umieszcza wszystko po przecinku w następującym polu, niezależnie od cudzysłowów.

Jedynym obejściem, jakie znalazłem, jest wyeliminowanie=, gdy zawartość pola zawiera przecinek.

Może to oznaczać, że istnieją pola, których nie da się dokładnie reprezentować w Excelu, ale już teraz Ufam, że nikt nie jest zbyt zaskoczony.

 27
Author: Jeffiekins,
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-12-10 19:58:59

Podczas tworzenia napisu do pliku CSV w C# musiałem sformatować go w ten sposób:

"=\"" + myVariable + "\""
 16
Author: Colin Pear,
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-04-21 13:09:04

W Excelu 2010 Otwórz nowy arkusz. Na wstążce danych kliknij "Pobierz zewnętrzne dane z tekstu". Wybierz plik CSV, a następnie kliknij "Otwórz". Kliknij "Dalej". Usuń zaznaczenie "Tab", umieść znacznik wyboru obok "Przecinka", a następnie kliknij"Dalej". Kliknij w dowolnym miejscu na pierwszej kolumnie. Przytrzymując klawisz shift przeciągnij suwak, aż będziesz mógł kliknąć ostatnią kolumnę, a następnie zwolnij klawisz shift. Kliknij przycisk radiowy "tekst", a następnie kliknij "Zakończ"

Wszystkie kolumny zostaną zaimportowane jako tekst, tak jak były w Plik CSV.

 15
Author: Rob Stockley,
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-02-06 21:15:58

Nadal problem w wydaniu Microsoft Office 2016, raczej niepokojący dla tych z nas pracujących z nazwami genów, takich jak MARC1, MARCH1, SEPT1 itp. Rozwiązanie okazało się najbardziej praktyczne po wygenerowaniu".plik csv " w R, który zostanie następnie otwarty/udostępniony użytkownikom Excela:

  1. Otwórz plik CSV jako tekst (notatnik)
  2. Skopiuj (ctrl + A, ctrl+c).
  3. Wklej go w nowym arkuszu excel-będzie wklejać w jednej kolumnie jako długie ciągi tekstowe.
  4. Wybierz / Wybierz to kolumna.
  5. Idź do Data - " tekst do kolumn...", w otwartym oknie wybierz "rozdzielone" (dalej). Sprawdź, czy jest zaznaczony "przecinek" (zaznaczenie go już pokaże podział danych na kolumny poniżej) (dalej), w tym oknie możesz wybrać kolumnę, którą chcesz i oznaczyć ją jako tekst (zamiast ogólnego) (Zakończ).

HTH

 13
Author: Ana Maria Mendes-Pereira,
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
2015-12-02 14:51:46

Oto prosta metoda, której używamy w pracy podczas generowania pliku csv, która zmienia nieco wartości, więc nie jest odpowiednia we wszystkich aplikacjach:

Poprzedza spację do wszystkich wartości w pliku csv

Ta przestrzeń zostanie usunięta przez Excela z liczb takich jak" 1"," 2.3 "i" -2.9e4", ale pozostanie w datach takich jak" 01/10/1993 "i znaczeniach logicznych takich jak" TRUE", zatrzymując ich konwersję do wewnętrznych typów danych programu excel.

Zatrzymuje się również podwójnie cudzysłowy są zapapowane na wczytane, więc niezawodnym sposobem na to, aby tekst w pliku csv pozostał niezmieniony przez excel, nawet jeśli jest to jakiś tekst w stylu "3.1415", jest otaczanie go podwójnymi cudzysłowami i poprzedzanie całego ciągu spacją, tzn. (używając pojedynczych cudzysłowów, aby pokazać, co chcesz wpisać)" "3.1415"". Następnie w programie excel zawsze masz oryginalny ciąg znaków, z wyjątkiem tego, że jest otoczony podwójnymi cudzysłowami i poprzedzony spacją, więc musisz uwzględnić te w dowolnych formułach itp.

 9
Author: Dan,
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-01-28 18:31:46

(Zakładając Excel 2003...)

Podczas korzystania z Kreatora Text-to-Columns, w Kroku 3 możesz dyktować typ danych dla każdej z kolumn. Kliknij kolumnę w podglądzie i zmień kolumnę niewłaściwego zachowania z "ogólne" na " tekst."

 8
Author: DocMax,
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-10-02 23:34:08

Jest to jedyny sposób, w jaki wiem, jak to osiągnąć, nie mieszając w samym pliku. Jak zwykle w Excelu nauczyłem się tego, godzinami bijąc głową o biurko.

Zmień .rozszerzenie pliku csv do .txt; spowoduje to zatrzymanie programu Excel przed automatyczną konwersją pliku po jego otwarciu. Oto jak to zrobić: otwórz Excel do pustego arkusza roboczego, Zamknij pusty arkusz, a następnie Plik = > Otwórz i wybierz Plik z .rozszerzenie txt. To zmusza Excela do otwarcia "Kreatora importu tekstu", w którym zadawaj pytania o to, jak chcesz zinterpretować plik. Najpierw wybierz swój ogranicznik (przecinek, tabulator, itp...), następnie (tu jest ważna część) wybieramy zestaw kolumn kolumn i wybieramy formatowanie. Jeśli chcesz dokładnie to, co znajduje się w pliku, wybierz "tekst", a Excel wyświetli tylko to, co znajduje się między ogranicznikami.

 8
Author: Chris,
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
2015-03-04 05:06:53

(EXCEL 2007 i nowsze)

Jak wymusić, aby excel nie" wykrywał " formatów daty bez edycji pliku źródłowego

Albo:

  • Zmień nazwę pliku na .txt
  • jeśli nie możesz tego zrobić, zamiast otwierać plik CSV bezpośrednio w programie excel, utwórz nowy skoroszyt, a następnie przejdź do
    Data > Get external data > From Text
    i wybierz swój plik CSV.

Tak czy inaczej, zostaną wyświetlone opcje importu, po prostu wybierz każdą kolumnę zawierającą daty i powiedz excel formatować jako "tekst" nie "ogólne".

 4
Author: Some_Guy,
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
2015-09-17 09:39:27

Its not The Excel. System Windows rozpoznaje formułę, dane jako datę i autokorekty. Musisz zmienić ustawienia systemu Windows.

"Panel sterowania" (- >"Przełącz na widok klasyczny") - > " regionalny i językowy Opcje "- > zakładka "Opcje regionalne" - > " Dostosuj..."- >zakładka "numery" - > i następnie zmień symbole zgodnie z tym, co chcesz.

Http://www.pcreview.co.uk/forums/enable-disable-auto-convert-number-date-t3791902.html

Będzie działać na Twoim komputer, jeśli te ustawienia nie zostaną zmienione, na przykład na komputerze Twoich klientów będą widzieć daty zamiast danych.

 3
Author: syandras,
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-05-08 11:51:32

Mam jus w tym tygodniu natknąłem się na tę konwencję, która wydaje się być doskonałym podejściem, ale nie mogę znaleźć odniesienia nigdzie. Zna go ktoś? Możesz podać źródło? Nie szukałem przez wiele godzin, ale mam nadzieję, że ktoś rozpozna takie podejście.

Przykład 1: = ("012345678905") wyświetla jako 012345678905

Przykład 2: = ("1954-12-12") wyświetla jako 1954-12-12, nie 12/12/1954.

 2
Author: GW4,
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-06-13 00:34:45

Witam mam ten sam problem,

Piszę ten vbscipt, aby utworzyć inny plik CSV. Nowy plik CSV będzie miał spację w czcionce każdego pola, więc excel zrozumie go jako tekst.

Więc tworzysz .plik vbs z poniższym kodem (na przykład Modify_CSV.vbs), Zapisz i zamknij. przeciągnij i upuść oryginalny plik do pliku vbscript. Utworzy nowy plik z "SPACE_ADDED" do nazwy pliku w tej samej lokalizacji.

Set objArgs = WScript.Arguments

Set objFso = createobject("scripting.filesystemobject")

dim objTextFile
dim arrStr ' an array to hold the text content
dim sLine  ' holding text to write to new file

'Looping through all dropped file
For t = 0 to objArgs.Count - 1
    ' Input Path
    inPath = objFso.GetFile(wscript.arguments.item(t))

    ' OutPut Path
    outPath = replace(inPath, objFso.GetFileName(inPath), left(objFso.GetFileName(inPath), InStrRev(objFso.GetFileName(inPath),".") - 1) & "_SPACE_ADDED.csv")

    ' Read the file
    set objTextFile = objFso.OpenTextFile(inPath)


    'Now Creating the file can overwrite exiting file
    set aNewFile = objFso.CreateTextFile(outPath, True) 
    aNewFile.Close  

    'Open the file to appending data
    set aNewFile = objFso.OpenTextFile(outPath, 8) '2=Open for writing 8 for appending

    ' Reading data and writing it to new file
    Do while NOT objTextFile.AtEndOfStream
        arrStr = split(objTextFile.ReadLine,",")

        sLine = ""  'Clear previous data

        For i=lbound(arrStr) to ubound(arrStr)
            sLine = sLine + " " + arrStr(i) + ","
        Next

        'Writing data to new file
        aNewFile.WriteLine left(sLine, len(sLine)-1) 'Get rid of that extra comma from the loop


    Loop

    'Closing new file
    aNewFile.Close  

Next ' This is for next file

set aNewFile=nothing
set objFso = nothing
set objArgs = nothing
 2
Author: Harry Duong,
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 17:47:33

Bez modyfikowania pliku csv możesz:

  1. Zmień opcję komórek formatu excel na "tekst"
  2. Następnie użyj" Kreatora importu tekstu", aby zdefiniować komórki csv.
  3. Po zaimportowaniu usuń te dane
  4. Następnie po prostu wklej jako zwykły tekst

Excel poprawnie sformatuje i oddzieli komórki csv jako sformatowany tekst ignorując formaty automatycznej daty.

Trochę głupie obejście, ale to lepsze niż modyfikowanie danych csv przed importowaniem. Andy Baird i Richard wymyka się tej metodzie, ale ominął kilka ważnych kroków.

 2
Author: cliffclof,
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
2015-03-30 19:00:02

To, co zrobiłem dla tego samego problemu, to dodanie następujących wartości przed każdą wartością csv: "=""" i jeden podwójny cudzysłów po każdej wartości CSV, przed otwarciem pliku w Excelu. Weźmy na przykład następujące wartości:

012345,00198475

Należy je zmienić przed otwarciem w Excelu na:

"="""012345","="""00198475"

Po wykonaniu tej czynności każda wartość komórki pojawia się jako formuła w programie Excel, więc nie zostanie sformatowana jako liczba, data itp. Na przykład wartość 012345 pojawia się jako:

="012345"
 2
Author: ChrisB,
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
2015-12-08 01:12:13

Żadne z oferowanych tutaj rozwiązań nie jest dobrym rozwiązaniem. Może działać w pojedynczych przypadkach, ale tylko wtedy, gdy kontrolujesz ostateczny wyświetlacz. Weźmy mój przykład: Moja praca produkuje listę produktów, które sprzedają do sprzedaży detalicznej. Jest to format CSV i zawiera kody części, niektóre z nich zaczynają się od zera, ustawiane przez producentów (nie pod naszą kontrolą). Pozbądź się wiodących zer i możesz rzeczywiście dopasować inny produkt. Klienci detaliczni chcą listę w formacie CSV ze względu na przetwarzanie back-end programy, które również są poza naszą kontrolą i różnią się w zależności od klienta, więc nie możemy zmienić formatu plików CSV. Brak przedrostka'=', ani dodanych tabulatorów. Dane w surowych plikach CSV są poprawne; to wtedy, gdy klienci otwierają te pliki w Excelu, zaczynają się problemy. Wielu klientów nie zna się na komputerach. Mogą po prostu otworzyć i zapisać załącznik e-mail. Myślimy o udostępnieniu danych w dwóch nieco różnych formatach: jednym jako przyjaznym dla Excela (korzystając z opcji zaproponowanych powyżej przez dodawanie zakładki, druga jako 'master'. Ale może to być pobożne życzenie, ponieważ niektórzy klienci nie zrozumieją, dlaczego musimy to zrobić. Tymczasem nadal wyjaśniamy, dlaczego czasami widzą " złe " dane w swoich arkuszach kalkulacyjnych. Dopóki Microsoft nie dokona odpowiedniej zmiany, nie widzę właściwej rozdzielczości tego, o ile nie ma się kontroli nad tym, jak użytkownicy końcowi korzystają z plików.

 2
Author: mljm,
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-11-30 10:59:29

Wiem, że to stary wątek. Dla takich jak ja, którzy nadal mają ten problem używając office 2013 za pośrednictwem obiektu powershell com mogą skorzystać z metody opentext . Problem polega na tym, że metoda ta ma wiele argumentów, które czasami są wzajemnie wyłączne. Aby rozwiązać ten problem, możesz użyć metody invoke-namedparameter wprowadzonej w w tym poście . Przykładem może być

$ex = New-Object -com "Excel.Application"
$ex.visible = $true
$csv = "path\to\your\csv.csv"
Invoke-NamedParameter ($ex.workbooks) "opentext" @{"filename"=$csv; "Semicolon"= $true}

Niestety właśnie odkryłem, że ta metoda jakoś łamie parsowanie csv, gdy komórki zawierać linebreaks. Jest to wspierane przez csv, ale implementacja microsoftów wydaje się być podsłuchiwana. Również jakoś nie wykrył niemieckich specyficznych znaków. Nadanie mu właściwej kultury nie zmieniło tego zachowania. Wszystkie pliki (csv i skrypt) są zapisywane z kodowaniem utf8. Najpierw napisałem następujący kod, aby wstawić komórkę csv po komórce.

$ex = New-Object -com "Excel.Application"
$ex.visible = $true;
$csv = "path\to\your\csv.csv";
$ex.workbooks.add();
$ex.activeWorkbook.activeSheet.Cells.NumberFormat = "@";
$data = import-csv $csv -encoding utf8 -delimiter ";"; 
$row = 1; 
$data | %{ $obj = $_; $col = 1; $_.psobject.properties.Name |%{if($row -eq1){$ex.ActiveWorkbook.activeSheet.Cells.item($row,$col).Value2= $_ };$ex.ActiveWorkbook.activeSheet.Cells.item($row+1,$col).Value2 =$obj.$_; $col++ }; $row++;}

Ale to jest bardzo powolne, dlatego Szukałem alternatywy. Appeobecnie Excel pozwala ustawić wartości zakresu komórek z matrix. Więc użyłem algorytmu w ten blog przekształcić csv w multiarray.

function csvToExcel($csv,$delimiter){
     $a = New-Object -com "Excel.Application"
     $a.visible = $true

    $a.workbooks.add()
     $a.activeWorkbook.activeSheet.Cells.NumberFormat = "@"
     $data = import-csv -delimiter $delimiter $csv; 
     $array = ($data |ConvertTo-MultiArray).Value
     $starta = [int][char]'a' - 1
     if ($array.GetLength(1) -gt 26) {
         $col = [char]([int][math]::Floor($array.GetLength(1)/26) + $starta) + [char](($array.GetLength(1)%26) + $Starta)
     } else {
         $col = [char]($array.GetLength(1) + $starta)
     }
     $range = $a.activeWorkbook.activeSheet.Range("a1:"+$col+""+$array.GetLength(0))
     $range.value2 = $array;
     $range.Columns.AutoFit();
     $range.Rows.AutoFit();
     $range.Cells.HorizontalAlignment = -4131
     $range.Cells.VerticalAlignment = -4160
}

 function ConvertTo-MultiArray {
     param(
         [Parameter(Mandatory=$true, Position=1, ValueFromPipeline=$true)]
         [PSObject[]]$InputObject
     )
     BEGIN {
         $objects = @()
         [ref]$array = [ref]$null
     }
     Process {
         $objects += $InputObject
     }
     END {
         $properties = $objects[0].psobject.properties |%{$_.name}
         $array.Value = New-Object 'object[,]' ($objects.Count+1),$properties.count
         # i = row and j = column
         $j = 0
         $properties |%{
             $array.Value[0,$j] = $_.tostring()
             $j++
         }
         $i = 1
         $objects |% {
             $item = $_
             $j = 0
             $properties | % {
                 if ($item.($_) -eq $null) {
                     $array.value[$i,$j] = ""
                 }
                 else {
                     $array.value[$i,$j] = $item.($_).tostring()
                 }
                 $j++
             }
             $i++
         }
         $array
     } 
} 
csvToExcel "storage_stats.csv" ";"

Możesz użyć powyższego kodu, ponieważ należy przekonwertować dowolne pliki CSV do Excela. Wystarczy zmienić ścieżkę do pliku csv i znak ogranicznika na dole.

 1
Author: flatbeat,
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 12:34:59

Wklej tabelę do Worda. Wykonaj wyszukiwanie / zamianę i zmień wszystkie - (myślniki) na -- (podwójny myślnik). Skopiuj i wklej do Excela. Może to samo zrobić dla innych symboli ( / ), itp. Jeśli chcesz zmienić raz myślnik w programie Excel, po prostu sformatuj kolumnę na tekst, a następnie dokonaj zmiany. Mam nadzieję, że to pomoże.

 1
Author: Guest,
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
2015-10-24 19:46:00

W moim przypadku "Sept8" w pliku csv wygenerowanym za pomocą R został przekonwertowany na" 8-Sept " przez Excel 2013. Problem został rozwiązany za pomocą zapisu.funkcja xlsx2() w pakiecie xlsx generuje plik wyjściowy w formacie xlsx, który może być załadowany przez Excela bez niechcianej konwersji. Tak więc, jeśli otrzymasz plik csv, możesz spróbować załadować go do R i przekonwertować do xlsx za pomocą zapisu.funkcja xlsx2 ().

 1
Author: Dinghai Zheng,
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
2016-02-29 02:43:30

Robię to dla numerów kart kredytowych, które ciągle konwertują do notacji naukowej: kończę importować mój .csv do Arkuszy Google. Opcje importu pozwalają teraz wyłączyć automatyczne formatowanie wartości liczbowych. Ustawiam wszelkie czułe kolumny na zwykły tekst i pobieram jako xlsx.

To okropny przepływ pracy, ale przynajmniej moje wartości są takie, jakie powinny być.

 1
Author: Brendonwbrown,
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
2016-08-16 20:09:22

Obejście za pomocą Dysku Google (lub numerów, jeśli jesteś na komputerze Mac):

  1. Otwórz dane w Excelu
  2. Ustaw format kolumny z niepoprawnymi danymi na Tekst (Format > Komórki > Liczba > tekst)
  3. załaduj .plik csv na Dysku Google i otwórz go za pomocą Arkuszy Google
  4. Skopiuj kolumnę
  5. Wklej kolumnę do Excela jako Tekst (Edycja > Wklej specjalny > tekst)

Alternatywnie, jeśli korzystasz z komputera Mac dla kroku 3, możesz otworzyć dane w aplikacji Numbers.

 1
Author: Derek Hill,
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-12-19 22:08:55

(EXCEL 2016 i Później, właściwie nie próbowałem w starszych wersjach)

  1. Otwórz nową pustą stronę
  2. Przejdź do zakładki "Dane"
  3. Kliknij "From Text / CSV" i wybierz plik csv
  4. Sprawdź w podglądzie, czy Twoje dane są poprawne.
  5. w przypadku konwersji kolumny na datę kliknij "Edytuj", a następnie wybierz typ tekstu, klikając na kalendarz w nagłówku kolumny
  6. Kliknij "Zamknij I Załaduj"
 1
Author: Roman Yakoviv,
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
2018-06-27 09:45:43

2018

Jedyne poprawne rozwiązanie, które zadziałało dla mnie(a także bez modyfikacji CSV).

Excel 2010:

  1. Utwórz nowy skoroszyt
  2. Data > From Text > Select your CSV file
  3. w wyskakującym okienku wybierz przycisk radiowy "rozdzielone", a następnie kliknij "Dalej >"
  4. pola ograniczników: zaznacz tylko "Przecinek" i odznacz Pozostałe opcje, a następnie kliknij "Dalej >"
  5. w "Podglądie danych" przewiń w prawo, a następnie przytrzymaj shift i kliknij na ostatnią kolumnę (spowoduje to zaznaczenie wszystkich kolumn). Teraz w" format danych kolumny "wybierz przycisk radiowy "tekst", a następnie kliknij "Zakończ".

Excel office365: (wersja klienta)

  1. Utwórz nowy skoroszyt
  2. Data > From Text / CSV > Select your CSV file
  3. wykrywanie typów danych > nie wykrywaj

Uwaga: Excel office365( wersja internetowa), ponieważ piszę to, nie będziesz w stanie tego zrobić.

 1
Author: evilReiko,
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
2018-08-29 11:26:55

Jeśli umieścisz odwrócony przecinek na początku pola, zostanie on zinterpretowany jako tekst.

Przykład: 25/12/2008 staje się '25/12/2008

Możesz również wybrać typ pola podczas importowania.

 0
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-10-02 23:38:54

Ok znalazłem prosty sposób, aby to zrobić w Excelu 2003 do 2007. Otwórz pusty skoroszyt XLS. Następnie przejdź do menu Dane, Importuj dane zewnętrzne. Wybierz plik csv. Przejdź przez kreator, a następnie w "format danych kolumn" wybierz dowolną kolumnę, która musi być zmuszona do "tekstu". Spowoduje to zaimportowanie całej kolumny jako formatu tekstowego, uniemożliwiając programowi Excel traktowanie określonych komórek jako daty.

 0
Author: Richard,
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-05-06 01:14:02

Prefiks spacja w cudzysłowach rozwiązał problem!!

Miałem dane jak "7/8" w jednym z ... kolumny pliku csv i MS-Excel konwertował go do daty "07-Aug". Ale z "LibreOffice Calc" nie było problemu.

Aby rozwiązać ten problem, dodałem znak spacji (dodałem spację przed 7) jak " 7/8" i zadziałało na mnie. Jest to testowane dla Excel-2007.

 0
Author: NitinBirari,
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-10-21 15:19:51

Ten problem jest nadal obecny w Mac Office 2011 i Office 2013, nie mogę temu zapobiec. To wydaje się takie podstawowe.

W moim przypadku miałem takie wartości jak "1 - 2" & "7 - 12" w pliku CSV zamkniętym poprawnie w odwróconych przecinkach automatycznie konwertuje się na datę w programie excel, jeśli spróbujesz następnie przekonwertować ją na zwykły tekst, otrzymasz reprezentację liczbową daty, taką jak 43768. Dodatkowo formatuje duże liczby Znalezione w kodach kreskowych i numerach EAN do 123E + numery ponownie, które nie mogą być przekształcone z powrotem.

Odkryłem, że Arkusze Google Drive Nie konwertują liczb na daty. Kody kreskowe mają przecinki co 3 znaki, ale można je łatwo usunąć. Obsługuje CSV naprawdę dobrze, zwłaszcza gdy masz do czynienia z CSV MAC / Windows.

Może kiedyś kogoś uratować.

 0
Author: EricNo7,
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
2015-05-21 10:45:48

NAJPROSTSZE ROZWIĄZANIE Dopiero dziś to rozgryzłem.

  • Otwórz w Wordzie
  • Zastąp wszystkie myślniki myślnikami en
  • Zapisz i zamknij
  • Otwórz w Excelu

Po zakończeniu edycji zawsze możesz go ponownie otworzyć w programie Word, aby ponownie zastąpić myślniki en myślnikami.

 0
Author: Randy Hoffman,
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
2015-08-12 15:10:26