Fără încărcare, 100% local, fără cont

Articol

De ce Excel îți deteriorează fișierele CSV

Un ID de pacient care începe cu trei zerouri. O genă numită SEPT2. Un număr de cont din șaisprezece cifre. Deschide oricare dintre acestea într-un program de calcul tabelar ca fișier CSV simplu, iar importatorul Excel nu doar că le afișează, le rescrie: zerourile dispar, numele genei devine o dată calendaristică, iar numărul de cont pierde ultimele câteva cifre. Nimic din toate astea nu e chiar o eroare de program, este ce se întâmplă atunci când un ghicitor de numere și date de uz general întâlnește text care doar arată ca un număr sau o dată. Iată ce se întâmplă efectiv cu un fișier CSV în momentul în care Excel îl deschide, și cum să oprești asta înainte să se întâmple.

Zerourile inițiale dispar

Introdu 02134 într-o celulă, iar tipul implicit de coloană al Excel, General, îl citește ca un număr și elimină zeroul inițial: 2134. Asta afectează orice cod stocat ca cifre, dar care nu este de fapt o cantitate: coduri poștale americane, coduri poștale franceze, numere de angajat sau de factură, numere de telefon. Din punct de vedere tehnic, nimic nu se pierde din fișierul CSV de bază, textul de lângă celulă rămâne neschimbat, până salvezi registrul de calcul, moment în care Excel scrie înapoi ce a afișat, iar zerourile dispar definitiv. Rezolvarea este să-i spui Excel-ului că respectiva coloană este text înainte să apuce să ghicească: prin Date > Din text/CSV (sau Obține date > Din fișier) poți seta explicit tipul de date al fiecărei coloane, sau adaugă un apostrof înaintea unei valori într-o singură celulă pentru a forța formatul text.

Tipul de coloană General al Excel citind textul 02134 ca număr și eliminând zeroul inițial pentru a afișa 2134

Textul devine dată calendaristică fără să întrebe

Același ghicitor caută și text cu formă de dată. O celulă care conține MAR1 sau SEPT2, citită ca 1 martie sau 2 septembrie, este convertită discret într-o valoare de dată și reformatată, fără niciun avertisment afișat. Asta nu e ipotetic: în 2020, Comitetul HUGO pentru Nomenclatura Genelor a redenumit aproximativ 27 de simboluri de gene umane, inclusiv SEPT2 și MARCH1, special pentru că programele de calcul tabelar continuau să le transforme în date calendaristice de fiecare dată când era deschis un set de date, o problemă suficient de serioasă încât un studiu din 2016 asupra lucrărilor de genomică a găsit erori de autocorectare de acest fel în aproximativ una din cinci publicații care includeau fișiere Excel suplimentare. Lecția se generalizează dincolo de numele de gene: orice cod alfanumeric scurt care se întâmplă să arate ca o zi și o lună riscă în momentul în care cineva îți deschide CSV-ul într-un program de calcul tabelar, nu doar al tău.

Numerele foarte lungi își pierd ultimele cifre

Excel stochează fiecare număr ca o valoare în virgulă mobilă cu 15 cifre semnificative de precizie, o limită pe care Microsoft o documentează direct. Un număr de card sau de cont din șaisprezece cifre, cum ar fi 4111111111111111, este rotunjit ca să se încadreze, deci ultima cifră sau două devin discret zero, iar valoarea nu mai este cea pe care ai introdus-o. Formatarea celulei ulterior nu va aduce înapoi cifrele lipsă, pentru că numărul stocat de bază a fost deja rotunjit; singura rezolvare este să imporți coloana ca text, sau să adaugi un apostrof înaintea valorii, înainte ca Excel s-o trateze vreodată ca număr.

Excel păstrează doar 15 cifre semnificative dintr-un număr: valoarea de 16 cifre 4111111111111111 este rotunjită, iar ultima ei cifră devine zero

Textul cu diacritice devine ilizibil

Codificarea este un mod de defecțiune separat de autocorectare. Un fișier CSV fără marcaj de ordine a octeților este pur și simplu octeți; dacă a fost salvat ca UTF-8, Excel pe Windows îl va deschide de obicei presupunând în schimb propria pagină de coduri a sistemului, deci literele cu diacritice, simbolurile monetare și emoji-urile ies ca text ilizibil (mojibake), un șir precum café apărând ca ceva mai aproape de café. Calea sigură când produci un CSV pentru Excel este să-l salvezi ca CSV UTF-8 sau să adaugi un marcaj de ordine a octeților UTF-8; calea sigură când îl consumi este să-l imporți prin Date > Din text/CSV, care te lasă să alegi explicit codificarea sursă, în loc să te bazezi pe un dublu clic să ghicească bine.

Mutarea datelor între formate fără să le deschizi în Excel

Nimic din toate astea nu e chiar o eroare a Excel, e ce anume e construit să facă ghicitorul de numere și date al unui program de calcul tabelar, și se aplică oricum ar fi deschis fișierul, nu doar în Excel. Cel mai sigur mod de a remodela un fișier CSV sau de a verifica dacă o coloană chiar rămâne text înainte să ajungă la orice program de calcul tabelar este să lucrezi direct pe el: convertorul nostru de date analizează CSV cu un parser standard care ține cont de ghilimele și nu reinterpretează niciodată tipul unei valori, deci un cod poștal sau un nume de genă rămâne exact textul pe care i l-ai dat. Rulează în întregime în browser, nimic din ce lipești nu este încărcat nicăieri. Asta protejează totuși doar pasul de conversie: dacă rezultatul urmează totuși să fie deschis ulterior într-un program de calcul tabelar, marchează și acolo coloanele sensibile ca text.

Instrumente din acest articol

Întrebări frecvente

Cum opresc Excel să elimine zerourile inițiale dintr-un CSV?

Nu deschide fișierul cu dublu clic. Importă-l în schimb prin Date > Din text/CSV (sau Obține date), care afișează un selector de tip de date coloană cu coloană; setează coloana de cod poștal, ID sau număr de telefon pe Text înainte de a finaliza importul. O rezolvare rapidă pe fiecare celulă este să introduci un apostrof înaintea valorii, ca '02134, ceea ce forțează formatul text fără să schimbe ce se afișează.

De ce a transformat Excel ID-ul sau codul meu într-o dată calendaristică?

Tipul de coloană General al Excel caută activ text cu formă de dată, tipare precum un cuvânt scurt plus un număr, sau două numere separate printr-o linioară sau bară oblică, și convertește orice se potrivește, fără să ceară nicio confirmare. Exact asta a forțat redenumirea simbolurilor de gene precum SEPT2 și MARCH1 în 2020. Importă coloana ca Text, la fel ca la zerourile inițiale, ca să oprești ghicirea înainte să se întâmple.

Convertirea CSV-ului meu în alt mod evită complet aceste probleme?

Le evită pentru acel pas de conversie, nu pentru totdeauna. Un parser care tratează fiecare câmp ca text simplu, precum convertorul nostru de date, nu va rescrie un cod poștal sau un nume de genă în timp ce transformă un CSV în JSON. Dar dacă rezultatul ajunge totuși să fie deschis mai târziu într-un program de calcul tabelar, de către tine sau de cine îl primește, importatorul acelui program primește o altă șansă să reinterpreteze valorile, deci coloanele sensibile trebuie marcate ca text și acolo.

Surse