Muszę wygenerować plik dla programu Excel, niektóre wartości w tym pliku zawierają wiele wierszy.
jest tam również tekst w języku innym niż angielski, więc plik musi być w formacie Unicode.
Plik, który teraz generuję, wygląda następująco: (w UTF8, z domieszanym tekstem innym niż angielski i wieloma wierszami)
Header1,Header2,Header3
Value1,Value2,"Value3 Line1
Value3 Line2"
Zauważ, że wartość wielowierszowa jest ujęta w podwójne cudzysłowy, z normalnym codziennym znakiem nowej linii.
Zgodnie z tym, co znalazłem w sieci, powinno to działać, ale nie działa, przynajmniej nie wygrywa plików Excel 2007 i UTF8, Excel traktuje trzecią linię jako drugi wiersz danych, a nie jako drugą linię pierwszego wiersza danych .
Musi to działać na komputerach mojego klienta i nie mam kontroli nad ich wersją programu Excel, więc potrzebuję rozwiązania, które będzie działać z programem Excel 2000 i nowszym.
Dzięki
EDYCJA: „rozwiązałem” mój problem, mając dwie opcje CSV, jedną dla programu Excel (Unicode, rozdzielone tabulatorami, bez znaków nowej linii w polach) i jedną dla reszty świata (UTF8, standardowy CSV).
Nie to, czego szukałem, ale przynajmniej działa (na razie)
Odpowiedzi:
Powinieneś mieć znaki spacji TYLKO na początku pól tam, gdzie znaki spacji są częścią danych. Excel nie usunie wiodących spacji. Otrzymasz niechciane spacje w nagłówkach i polach danych. Co gorsza, to,
"
co powinno „chronić” ten znak końca wiersza w trzeciej kolumnie, zostanie zignorowane, ponieważ nie znajduje się na początku pola.Jeśli masz w pliku znaki inne niż ASCII (zakodowane w UTF-8), powinieneś mieć BOM UTF-8 (3 bajty
hex EF BB BF
) na początku pliku. W przeciwnym razie Excel zinterpretuje dane zgodnie z domyślnym kodowaniem ustawień regionalnych (np. Cp1252) zamiast utf-8, a znaki spoza zestawu ASCII zostaną usunięte.Poniższe uwagi dotyczą programu Excel 2003, 2007 i 2013; nie testowano w programie Excel 2000
Jeśli otworzysz plik, klikając dwukrotnie jego nazwę w Eksploratorze Windows, wszystko działa OK.
Jeśli otworzysz go z poziomu programu Excel, wyniki będą się różnić:
Dostępne opcje:
źródło
EFBBBF
nagłówek, służy0A
jako separator wierszy i0D0A
jako nowa linia wewnątrz ciągów w komórkach tekstowych.Po wielu poprawkach, oto konfiguracja, która działa generując pliki w systemie Linux, czytając w systemie Windows + Excel, chociaż osadzony format nowej linii nie jest zgodny ze standardem :
W Perlu użyłem Text :: CSV, aby zrobić to w następujący sposób:
źródło
\n
. DziękiOstatnio miałem podobny problem, rozwiązałem go importując plik HTML , przykład bazowy wyglądałby tak:
Wiem, że to nie jest plik CSV i może działać inaczej dla różnych wersji programu Excel, ale myślę, że warto spróbować.
Mam nadzieję, że to pomoże ;-)
źródło
Warto zauważyć, że jeśli plik .CSV ma pola zawinięte w podwójne cudzysłowy, które zawierają podziały wierszy, program Excel nie zaimportuje poprawnie pliku .CSV, jeśli plik .CSV jest zapisany w formacie UTF-8. Program Excel traktuje podział wiersza tak, jakby był CR / LF i rozpoczyna nowy wiersz. Arkusz kalkulacyjny jest zniekształcony. Wydaje się, że jest to prawdą, nawet jeśli jako separatory pól używane są średniki (zamiast przecinków).
Problem można rozwiązać, edytując plik CSV za pomocą Notatnika systemu Windows, używając polecenia Plik> Zapisz jako ..., aby zapisać plik, a przed zapisaniem pliku należy zmienić kodowanie pliku z UTF-8 na ANSI. Po zapisaniu pliku w formacie ANSI stwierdzam, że Microsoft Excel 2013 działający w systemie Windows 7 Professional zaimportuje plik poprawnie.
źródło
Nowa linia wewnątrz wartości wydaje się działać, jeśli jako separatora użyjesz średnika zamiast przecinka lub tabulatora i użyjesz cudzysłowów.
Działa to zarówno w programie Excel 2010, jak i Excel 2000. Jednak, co zaskakujące, działa tylko wtedy, gdy otwierasz plik jako nowy arkusz kalkulacyjny, a nie kiedy importujesz go do istniejącego arkusza kalkulacyjnego przy użyciu funkcji importu danych.
źródło
Na komputerze znak ASCII # 10 jest tym, co chcesz umieścić nową linię w wartości.
Jednak po przesłaniu go do programu Excel musisz upewnić się, że zawijanie słów jest włączone dla komórek wieloliniowych, w przeciwnym razie nowa linia pojawi się jako kwadratowe pole.
źródło
To nie zadziała, jeśli spróbujesz zaimportować plik do EXCEL.
Skojarz rozszerzenie pliku csv z EXCEL.EXE, aby móc wywołać EXCEL poprzez dwukrotne kliknięcie pliku csv.
Tutaj umieszczam tekst, po którym następuje znak nowej linii, po którym następuje więcej tekstu ORAZ zamykam cały ciąg w podwójne cudzysłowy.
Nie używaj CR, ponieważ EXCEL umieści część ciągu w następnej komórce.
Zobaczysz to po wywołaniu EXCEL. Być może będziesz musiał automatycznie dopasować wysokość, aby zobaczyć to wszystko. Miejsce przerwania linii zależy od szerokości komórki.
2
DATA
Oto kod w Basicu
źródło
Znalazłem to i zadziałało
Wtedy musisz mieć załączone rzeczy
.....
Wtedy, gdy musisz coś napisać - na przykład HTML, który zawiera hasło „możesz to zrobić
Nowe linie kończą się na
. PHP_EOL
Koniec skryptu wypisuje link, aby użytkownik mógł pobrać plik.
źródło
Pliki UTF zawierające BOM spowodują, że program Excel będzie traktował nowe wiersze dosłownie, nawet jeśli to pole jest otoczone cudzysłowami. (Przetestowany Excel 2008 Mac)
Rozwiązaniem jest uczynienie z nowych wierszy powrotu karetki (CHR 13), a nie wysuwu wiersza.
źródło
Przetestuj to: to w pełni działa dla mnie: Umieść następujące wiersze w
xxxx.csv
plikuOtwórz w programie Excel.
w niektórych przypadkach otworzy się bezpośrednio, w przeciwnym razie konieczne będzie użycie kolumny do konwersji danych. rozszerz szerokość kolumny i naciśnij przycisk zawijania tekstu. lub sformatuj komórki i aktywuj zawijanie tekstu.
i dziękuję za inne sugestie, ale nie zadziałały. Jestem w czystej środowisku Windows i nie chciałem bawić się Unicode lub inną zabawną rzeczą.
W ten sposób wstawiasz formułę z csv do excel. Ta metoda pracy może mieć wiele zastosowań. (zwróć uwagę na = przed cudzysłowami)
pd: W swoich sugestiach prosimy o umieszczenie próbek danych, a nie tylko kodu.
źródło
umieszczenie „\ r” na końcu każdego wiersza w rzeczywistości spowodowało łamanie linii w programie Excel, ale w pliku .csv zniknęło i pozostawiło brzydki bałagan, w którym każdy wiersz był zgniatany z następnym bez spacji i łamania linii
źródło
Sposób, w jaki to robimy (używamy VB.Net), polega na umieszczeniu tekstu w nowych wierszach w Chr (34), który jest znakiem reprezentującym podwójne cudzysłowy, i zastąpieniu wszystkich znaków CR-LF LF.
źródło
Zwykle nowa linia to „\ r \ n”. W moim pliku CSV zastąpiłem „\ r” pustą wartością. Oto kod w Javascript:
Kiedy otwieram plik CSV w MS Excel, działa dobrze. Jeśli wartość ma wiele linii, pozostanie w jednej komórce w arkuszu Excel.
źródło
Tylko w przypadku otwierania pliku składnia to
Najważniejsze jest to, że po pierwszym „,” nie ma spacji . Zwykle spacje są w porządku i są przycinane, jeśli ciąg nie jest cytowany. Ale poza tym paskudny. Zajęło mi trochę czasu, zanim to rozgryzłem.
Nie ma znaczenia, czy linia jest zakończona \ n, czy \ c \ n.
Upewnij się, że rozszerzyłeś pasek formuły, abyś mógł faktycznie zobaczyć tekst w komórce (dostałem mnie po długim dniu ...)
Teraz oczywiście, File Open nie będzie poprawnie obsługiwał UTF-8 (chyba że używa się sztuczek).
Excel> Dane> Pobierz dane zewnętrzne > Z tekstu
Można ustawić w tryb UTF-8 (jest daleko w dół listy czcionek). Jednak w takim przypadku nowe linie wydają się nie działać i nie wiem, jak to naprawić.
(Można by pomyśleć, że po 30 latach stwardnienie rozsiane zrobi to dobrze.)
źródło
W Excel 365 podczas importu pliku:
Dane -> Z tekstu / CSV -> Wybierz plik> Przekształć dane -> Konfiguracja źródła danych -> Wybierz źródło danych -> Kliknij Edytuj źródło -> Na liście rozwijanej podziału wiersza wybierz opcję Ignoruj podziały wierszy w cudzysłowach.
Powyższy tekst został przetłumaczony z języka portugalskiego, więc sformułowanie może być inne w języku angielskim.
źródło
możesz zrobić następny
"\"Value3 Line1 Value3 Line2\""
. U mnie działa generowanie pliku csv w javaźródło
Oto ciekawe podejście z wykorzystaniem JavaScript ...
źródło
Drukowanie nowego wiersza HTML
<br/>
w treści i otwieranie w programie Excel będzie działać dobrze na każdym programie Excelźródło
Możesz użyć skrótu klawiaturowego ALT + Enter.
źródło