Generuję plik CSV (rozdzielany przecinkami, a nie tabulatorami). Moi użytkownicy najprawdopodobniej otworzą plik CSV w programie Excel, klikając go dwukrotnie. Moje dane mogą zawierać przecinki i znaki mowy, więc unikam ich w następujący sposób.
Reference, Title, Description
1, "My little title", "My description, which may contain ""speech marks"" and commas."
2, "My other little title", "My other description, which may also contain ""speech marks"" and commas."
O ile wiem, zawsze tak było. Oto mój problem: kiedy otwieram ten plik w programie Excel 2010, moja ucieczka nie jest przestrzegana. Znaki mowy pojawiają się na arkuszu, a przecinek tworzy nowe kolumny.
java
excel
csv
special-characters
centralscru
źródło
źródło
Poniżej znajdują się zasady, jeśli uważasz, że jest to przypadkowe. Na podstawie tych reguł można stworzyć funkcję użyteczności.
Jeśli wartość zawiera przecinek, znak nowej linii lub podwójny cudzysłów, wartość typu String powinna zostać zwrócona w cudzysłowie.
Wszelkie znaki podwójnego cudzysłowu w wartości powinny być poprzedzone innym cudzysłowem.
Jeśli wartość nie zawiera przecinka, nowej linii ani podwójnego cudzysłowu, wówczas wartość String powinna zostać zwrócona bez zmian.
źródło
Zgodnie z instrukcjami Yashu napisałem następującą funkcję (to kod PL / SQL, ale powinien być łatwy do dostosowania do dowolnego innego języka).
źródło
Pojedyncze cudzysłowy też działają dobrze, nawet bez znaków unikania podwójnych cudzysłowów, przynajmniej w Excel 2016:
Excel umieści to w 5 kolumnach (jeśli wybierzesz pojedynczy cudzysłów jako „Kwalifikator tekstu” w kreatorze „Tekst do kolumn”)
źródło
Nawet po podwójnych cudzysłowach miałem ten problem przez kilka dni.
Zastąpiono ogranicznik rur przecinkiem, a potem wszystko działało dobrze.
źródło