Pułapki eksportu - wartości testowe
Wartości, które przechodzą walidację i psują się dopiero w wyeksportowanym pliku. 12 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.
Wpisuj je po jednej skrótem AltShiftN
w palecie albo weź wszystkie do skryptu poleceniem nkb emit export-breakers.
Wartość zaczynająca się od =
export-breakers/formula-equals
=1+1
=1+1
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Wartość zaczynającą się od znaku równości arkusz kalkulacyjny traktuje jak formułę. Wyeksportowany plik pokazuje wynik obliczenia zamiast danych.
- Co robi poprawna aplikacja
- Escapowana przy eksporcie, żeby arkusz pokazał tekst tak, jak został wpisany.
Kod, który wygląda jak data
export-breakers/sheet-date-mar1
MAR1
MAR1
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Arkusze kalkulacyjne zamieniają krótkie kody podobne do dat na daty, a pierwotnej wartości nie da się odzyskać z pliku.
- Co robi poprawna aplikacja
- Wyeksportowany jako tekst, w kolumnie o typie, który wyklucza konwersję.
Przecinek w wartości
export-breakers/csv-comma
Kowalski,Jan
Kowalski, Jan
- 13 grafemów
- 13 punktów kodowych
- 13 bajtów
- 13 jednostek UTF-16
- Co psuje
- Przecinek w wartości dzieli jedną kolumnę na dwie, chyba że na każdym etapie eksportu wartość jest poprawnie ujęta w cudzysłów.
- Co robi poprawna aplikacja
- Wartość ujęta w cudzysłów przy eksporcie. Plik wczytuje się z powrotem z tą samą liczbą kolumn.
Cudzysłowy w wartości
export-breakers/csv-quote
Jan"Janek"Kowalski
Jan "Janek" Kowalski
- 20 grafemów
- 20 punktów kodowych
- 20 bajtów
- 20 jednostek UTF-16
- Co psuje
- Cudzysłowy w wartości ujętej w cudzysłów trzeba podwoić. Błąd przesuwa każdą następną kolumnę.
- Co robi poprawna aplikacja
- Wartość ujęta w cudzysłów i escapowana tak, że zapis i odczyt zwracają pierwotny tekst.
Podział wiersza w wartości
export-breakers/csv-newline
JanKowalski
Jan\u000AKowalski
- 1 podział wiersza
- 12 grafemów
- 12 punktów kodowych
- 12 bajtów
- 12 jednostek UTF-16
- Co psuje
- Podział wiersza w wartości zamienia jeden wiersz w dwa dla każdego parsera, który dzieli tekst na wiersze przed parsowaniem.
- Co robi poprawna aplikacja
- Wartość ujęta w cudzysłów, żeby rekord został jednym wierszem, albo odrzucona przy wprowadzaniu.
Dziewiętnastocyfrowy identyfikator
export-breakers/sheet-precision
1234567890123456789
1234567890123456789
- 19 grafemów
- 19 punktów kodowych
- 19 bajtów
- 19 jednostek UTF-16
- Co psuje
- Arkusze kalkulacyjne zachowują około piętnastu cyfr znaczących, więc długie identyfikatory wracają zaokrąglone i w zapisie wykładniczym.
- Co robi poprawna aplikacja
- Wyeksportowany jako tekst. Identyfikator przeżywa otwarcie i zapisanie pliku.
Kod z zerami wiodącymi
export-breakers/leading-zero-code
007
007
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Kody tracą zera wiodące w chwili, gdy arkusz uzna kolumnę za liczbową.
- Co robi poprawna aplikacja
- Wyeksportowany jako tekst, żeby kod został taki, jak go nadano.
Numer telefonu zaczynający się od +
export-breakers/formula-plus
+48123456789
+48123456789
- 12 grafemów
- 12 punktów kodowych
- 12 bajtów
- 12 jednostek UTF-16
- Co psuje
- Numer telefonu zapisany z prefiksem kraju zostaje odczytany jako formuła, a komórka pokazuje błąd zamiast numeru.
- Co robi poprawna aplikacja
- Escapowany przy eksporcie albo w kolumnie o typie tekstowym.
Wartość zaczynająca się od -
export-breakers/formula-minus
-1+1
-1+1
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- To samo co znak równości, w postaci, która wygląda też jak zwykła liczba ujemna.
- Co robi poprawna aplikacja
- Escapowana przy eksporcie.
Wartość zaczynająca się od @
export-breakers/formula-at
@name
@name
- 5 grafemów
- 5 punktów kodowych
- 5 bajtów
- 5 jednostek UTF-16
- Co psuje
- Nazwa konta w serwisie społecznościowym albo wzmianka staje się w niektórych arkuszach wywołaniem funkcji.
- Co robi poprawna aplikacja
- Escapowana przy eksporcie.
Średnik w wartości
export-breakers/csv-semicolon
a;b
a;b
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Drugi separator kolumn, używany w wielu krajach, także w Polsce. Plik poprawny w jednych ustawieniach regionalnych psuje się w innych.
- Co robi poprawna aplikacja
- Separator zadeklarowany w pliku, a wartości ujęte w cudzysłów niezależnie od tego, który jest używany.
Ułamek, który wygląda jak data
export-breakers/sheet-date-3-4
3/4
3/4
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Ułamek, proporcja albo numer domu, zamieniony na datę przy otwarciu pliku.
- Co robi poprawna aplikacja
- Wyeksportowany jako tekst. Otwarcie i zapisanie pliku nie zmienia wartości.