Specifikace CSV je jeden, který jsem našel implementovaný mnoha různými způsoby... v podstatě se zdá, že je pouze poloviční, což je frustrující vzhledem k jeho popularitě.
Chcete-li zahrnout nový řádek do buňky v CSV, může být nutné buňku zabalit nebo nový řádek může vyžadovat escapování. Z propojeného dokumentu si všimnete, že existují tři způsoby, jak to udělat – a různé programy s tím zacházejí různě:
- Excel zalomí celou buňku do dvojitých uvozovek:buňka může obsahovat (neumístěné) znaky nového řádku a může být považována za jedinou buňku, pokud je zabalena do dvojitých uvozovek (všimněte si také, že budete muset použít styl Excel dvojité uvozovky v obsahu buňky)
- Jiné programy vkládají před znak jedno zpětné lomítko, tedy řádek končící na
\
se nepovažuje za konec řádku, ale za znak nového řádku v buňce. Buňka může obsahovat znaky nového řádku bez escapování, pokud jim předchází znak zpětného lomítka. - Jiné stále nahrazují nový řádek escapováním znaků ve stylu C, skutečnou posloupností znaků
\n
nebo\r\n
. V tomto případě má buňka zcela zakódované znaky nového řádku.
Problém je umocněn potenciální potřebou uniknout řídicím znakům (a také dalšímu obsahu (např. "
v #1 a \
v #2+3) a různé styly escapování (např. vložená uvozovka může být uvozena takto:dvojitá uvozovka ""
nebo zpětné lomítko - dvojitá uvozovka \"
)
Moje rada :vygenerujte dokument otevřené kanceláře s více řádky a klíčovými znaky escape a podívejte se, jak open office generuje CSV
soubor. Odtud se můžete rozhodnout, kterou z výše uvedených metod použít pro nové řádky v buňkách a kterou metodu escapování.
příklad stylu-1 (excel):
#num,str,num
1,"Hello
World",1990
2,"Yes",1991
příklad stylu 2:
#num,str,num
1,Hello \
Word,1990
2,Yes,1991
příklad stylu 3:
#num,str,num
1,Hello \nWorld,1990
2,Yes,1991