Wszystkie artykuły

KajoData / Excel

Jak załadować CSV do Excela bez utraty danych

Prowadzę przez import w Power Query i kontrolę wyniku. Z jednym małym plikiem, zachowanymi identyfikatorami i regułami do kolejnego odświeżenia.

Kajo RudzińskiOpublikowano Aktualizacja 11 min czytania

Maszyna rozdziela luźne żółte płytki na uporządkowane kolumny.

Klikasz plik CSV, Excel pokazuje jedną kolumnę, a wszystkie dane siedzą w niej razem ze średnikami. Albo kolumny wyglądają dobrze, za to kod produktu stracił zera na początku. Ja w takiej sytuacji wracam do oryginalnego pliku i importuję go z kontrolą ustawień. Ręczna naprawa już zmienionych wartości bywa dużo trudniejsza niż poprawne wczytanie źródła.

Pokażę Ci import przez Dane > Z tekstu/CSV, wybór separatora, kodowania i typów kolumn oraz prostą kontrolę wyniku. Głównym środowiskiem jest Excel dla Microsoft 365 na Windows z Power Query. W innych wersjach i na Macu dostępność oraz rozmieszczenie opcji mogą się różnić. Microsoft opisuje import plików tekstowych wraz z wariantami dostępnych narzędzi.

CSV przechowuje tekst i potrzebuje interpretacji

CSV jest plikiem tekstowym z rekordami i polami rozdzielonymi ustalonym znakiem. Sama końcówka nazwy nie gwarantuje przecinka: w praktyce spotkasz również pliki ze średnikami. Plik nie przechowuje kolorów komórek, szerokości kolumn ani wielu arkuszy. Kiedy Excel go otwiera, musi zdecydować, jak podzielić tekst i jakie typy przypisać wartościom.

To właśnie na tym etapie powstaje spora część problemów. Ciąg 00123 może być identyfikatorem, ale program może potraktować go jak liczbę. Zapis 03/04/2026 może oznaczać dwie różne daty zależnie od umowy regionalnej. Poprawny podział na pięć kolumn jeszcze nie dowodzi poprawnego importu. Potrzebujemy także znaczenia tych pięciu kolumn i wiedzy o formacie źródła.

Bezpośrednie otwarcie pliku może zadziałać, jeśli ustawienia i dane do siebie pasują. Nie ma potrzeby twierdzić, że nigdy nie wolno tak robić. Do pracy analitycznej wybieram jednak świadomy import, ponieważ chcę obejrzeć decyzje programu przed ich zaakceptowaniem. Szczególnie dotyczy to identyfikatorów, dat oraz liczb z separatorami dziesiętnymi innymi niż te, których używam na co dzień.

Przygotuj źródło, którego nie nadpiszesz

Zachowaj otrzymany CSV bez zmian, a wynik zapisz w oddzielnym skoroszycie XLSX. Dzięki temu masz do czego wrócić, jeśli import zmieni typ lub zgubi część wartości. Nie zapisuj naprawionego widoku na oryginalnym pliku, zanim ustalisz przyczynę problemu. W przeciwnym razie kolejna próba zacznie się już od danych przekształconych przez poprzednią.

Otwórz kopię źródła w edytorze tekstowym i sprawdź pierwszy wiersz, kilka kolejnych oraz przykłady zawierające polskie znaki. Szukasz separatora pól, zapisu dat, części dziesiętnej i cudzysłowów. Nie musisz rozumieć całego pliku. Wystarczy ustalić kilka reguł, które potem porównasz z podglądem importu. Przy niejednoznacznej dacie zapytaj właściciela źródła albo sprawdź specyfikację eksportu.

W ćwiczeniu użyję poniższego, syntetycznego zestawu. Możesz przepisać go do pliku tekstowego zapisanego jako UTF-8 z rozszerzeniem CSV. Separator pól to średnik, daty mają układ dzień/miesiąc/rok, a kwoty używają przecinka dziesiętnego. Nazwy miast służą także do sprawdzenia kodowania.

ID;Data;Miasto;Kwota;Opis
00123;03/04/2026;Łódź;12,50;"Opakowanie; duże"
00124;04/04/2026;Kraków;7,50;Standard
00125;05/04/2026;Gdańsk;0,00;Zwrot

Docelowo powinny powstać trzy rekordy i pięć kolumn. Pierwsza data oznacza 3 kwietnia 2026, a identyfikator zachowuje pięć znaków. Kwoty dają razem 20,00. W pierwszym opisie średnik należy do treści pola i jest osłonięty cudzysłowami. Te konkretne oczekiwania pomagają ocenić wynik lepiej niż ogólne wrażenie, że tabela wygląda dobrze.

Wybierz Z tekstu/CSV i obejrzyj podgląd

W pustym skoroszycie wybierz Dane > Z tekstu/CSV, wskaż plik i przejdź do podglądu. W części wersji dojdziesz do tego przez Pobierz dane > Z pliku. Zanim klikniesz Załaduj, sprawdź rozdzielenie kolumn i pierwsze wartości. Jeśli potrzebujesz ustawić typy, wybierz Przekształć dane i otwórz edytor Power Query.

Dla ćwiczenia ustaw separator średnik. Gdy wybierzesz przecinek, kwota 12,50 zostanie potraktowana jako materiał do innego podziału, a układ rekordów przestanie odpowiadać nagłówkom. Gdy podgląd pokazuje jeden długi ciąg ze średnikami, również zacznij od separatora. Dokumentacja łącznika Text/CSV opisuje dostępne ustawienia podziału i wykrywania typów.

Sprawdź, czy pierwszy wiersz został rozpoznany jako nagłówki. Jeśli widzisz nazwy w rodzaju Column1, a poniżej ID, Data i Miasto, użyj opcji pierwszego wiersza jako nagłówków. Jeśli nagłówki już istnieją, nie powtarzaj tego kroku, bo pierwsza transakcja mogłaby stać się zestawem nazw kolumn. Każdy etap porównuję z tym, co rzeczywiście widzę w pliku.

Separator pól, przecinek dziesiętny i cudzysłów

Separator pól rozdziela kolumny. Separator dziesiętny jest częścią liczby. W naszym źródle te role pełnią różne znaki: średnik oraz przecinek. Zamiana wszystkich przecinków na kropki w edytorze tekstowym jest ryzykowna, ponieważ ten sam znak może wystąpić w opisie lub innym polu. Lepiej poprawnie ustawić interpretację konkretnej kolumny niż przerabiać cały plik metodą szukaj i zamień.

Cudzysłowy pozwalają umieścić separator wewnątrz pola. Opis "Opakowanie; duże" powinien trafić do jednej komórki, mimo obecności średnika. Jeżeli rekord rozjeżdża się właśnie przy takim opisie, sprawdź sposób cytowania pól w źródle. Dokumentacja Csv.Document opisuje także obsługę końców linii wewnątrz cytowanych pól. Zwykły podział każdej linii po każdym średniku nie odwzorowuje wszystkich zasad CSV.

Nie usuwam cudzysłowów hurtowo. Mogą chronić separator lub znak nowej linii należący do opisu. Jeśli eksport jest uszkodzony, proszę o poprawny plik albo dokumentuję ograniczenie. Jednorazowe ręczne przesunięcie kilku komórek może uratować podgląd, ale przy kolejnym odświeżeniu problem wróci. Chcę rozumieć regułę źródła, zanim zapiszę powtarzalne przekształcenie.

Kodowanie odpowiada za poprawne litery

Jeżeli Łódź zmieniła się w ciąg dziwnych znaków, sprawdź kodowanie źródła pliku. Dla ćwiczenia wybierz UTF-8. Separator nie naprawia liter, tak samo jak zmiana czcionki nie poprawia błędnej interpretacji bajtów. To osobne ustawienie importu i warto sprawdzać je niezależnie od liczby kolumn. Obejrzyj kilka nazw zawierających różne polskie znaki, nie tylko jedną komórkę.

Microsoft wyjaśnia rolę znacznika BOM przy otwieraniu UTF-8. Plik UTF-8 z BOM może zostać poprawnie rozpoznany przy zwykłym otwieraniu; import przez Power Query daje dodatkową kontrolę. Nie zakładaj jednak, że każdy plik z polskimi znakami jest UTF-8. Jeśli źródło używa innego kodowania, wybierz to rzeczywiste, zamiast akceptować pierwszy czytelny fragment podglądu.

Gdy w pliku tekstowym już widzisz znak zastępczy zamiast litery, sama zmiana ustawienia podczas importu może nie odtworzyć oryginalnej informacji. Potrzebny jest poprawny eksport. Dlatego zachowuję źródło i odróżniam błąd odczytu od wcześniejszego uszkodzenia tekstu. Te dwa problemy wyglądają podobnie w arkuszu, ale wymagają innego działania.

Ustaw ID jako tekst przed utratą zer

Identyfikatory 00123, 00124 i 00125 ustaw jako Tekst. Nie będziemy ich dodawać ani uśredniać, więc typ liczbowy nie daje tu korzyści. Jeżeli Power Query dodało automatyczny krok Zmieniono typ i zamieniło ID na liczby, popraw ten krok lub usuń go przed przypisaniem właściwych typów. Zamiana już zmienionego 123 na tekst nie odtworzy samodzielnie początkowych zer.

To samo podejście stosuję do długich kodów. Excel przechowuje liczby z dokładnością do 15 cyfr znaczących, więc identyfikatory o większej liczbie cyfr wymagają tekstu. Instrukcja Microsoft o zerach wiodących i dużych liczbach wyjaśnia to ograniczenie. Format wyświetlający dodatkowe zera nie zastępuje zachowania oryginalnego kodu. Najpierw zabezpiecz zawartość, dopiero potem wygląd.

Po załadowaniu porównaj kilka ID z oryginalnym tekstem, w tym te z zerami i najdłuższe. Sprawdź także identyfikator z literą, jeżeli taki występuje w pełnym pliku. To, że pierwszych sto kodów przypomina liczby, nie oznacza, że cała kolumna jest liczbowa. Typ powinien wynikać z definicji pola w systemie, a nie wyłącznie z wyglądu małej próbki.

Różne kształty przechodzą przez dopasowane bramki i trafiają do uporządkowanych kolumn.

Daty i kwoty interpretuj według źródła

Dla kolumny Data wybierz zmianę typu przy użyciu ustawień regionalnych. Ustaw typ Data i region odpowiadający zapisowi dzień/miesiąc/rok, na przykład Polski. W ćwiczeniu 03/04/2026 oznacza 3 kwietnia, a nie 4 marca. Ustawienie regionu ma rozstrzygnąć znaczenie tekstu. Późniejsza zmiana formatu wyświetlania nie poprawi daty, którą wcześniej zinterpretowano jako inny dzień.

Kolumnie Kwota nadaj odpowiedni typ liczbowy z regionem rozpoznającym przecinek dziesiętny. Z wartości 12,50 i 7,50 powinny powstać liczby, które razem dają 20,00. Microsoft opisuje zmianę typu z ustawieniami regionalnymi. Ustawienia źródła mogą różnić się od ustawień komputera osoby otwierającej skoroszyt, dlatego warto zapisać je w przekształceniu.

Nie ufam bezwarunkowo automatycznemu rozpoznaniu typów. Dla nieustrukturyzowanych źródeł Power Query może ustalać je na podstawie próbki; standardowe wykrywanie opiera się na pierwszych 200 wierszach. Dokumentacja typów danych zaleca jawne określanie typów kolumn. Sprawdź późniejsze rekordy i błędy konwersji, szczególnie gdy pierwsze wiersze nie reprezentują całej zawartości pliku.

Załaduj do tabeli i sprawdź wynik

Gdy podział i typy są poprawne, wybierz Zamknij i załaduj, a wynik umieść w tabeli arkusza. Zapisz skoroszyt jako XLSX, żeby zachować zapytanie i strukturę pracy. CSV pozostaje tekstowym źródłem. O różnicy między zakresem a tabelą przeczytasz w artykule jak przygotować tabelę w Excelu. Tutaj tabela jest miejscem odbioru danych po imporcie.

Dla ćwiczenia sprawdź trzy rekordy, pięć kolumn, zachowane ID oraz pierwszą datę. Kwoty powinny być liczbami o sumie 20,00, opis z wewnętrznym średnikiem ma zajmować jedno pole, a nazwy miast zachować polskie litery. Sprawdź także zero w ostatnim rekordzie. Zero jest tu jawną wartością z pliku, nie zastępstwem brakującej obserwacji.

W większym zestawie potrzebujesz podobnych punktów kontrolnych uzgodnionych ze źródłem: liczby rekordów, zakresu dat, unikalności klucza i sum dla wybranych kolumn. Sam brak komunikatów błędu nie wystarcza. Data mogła zostać zinterpretowana niewłaściwie bez żadnego błędu technicznego. Dobieram więc kontrole tak, żeby sprawdzały znaczenie danych, a nie jedynie możliwość ich pokazania w tabeli.

Odświeżenie i eksport to osobne czynności

Import przez Power Query może stać się powtarzalnym procesem. Po zmianie zawartości źródła odświeżenie ponownie wykona zapisane kroki. Ustal jednak, czy plik ma stałą nazwę i lokalizację. Jeśli kolejny eksport trafi do innego folderu, połączenie nadal może wskazywać poprzedni. Sprawdzaj aktualność okresu i liczbę rekordów po odświeżeniu, zamiast opierać się wyłącznie na komunikacie zakończenia.

Nie poprawiaj danych źródłowych wyłącznie ręcznie w tabeli wynikowej, licząc, że poprawka przetrwa ponowne wczytanie. Ustal, czy korekta powinna powstać w źródle, w jawnym kroku zapytania czy w oddzielnej tabeli uzupełnień łączonej po ID. Wybór zależy od tego, kto odpowiada za dane. Ważne, żeby następne odświeżenie nie przywróciło błędu bez wiedzy użytkownika.

Eksport wyniku do CSV to z kolei nowa umowa z odbiorcą. Trzeba uzgodnić separator, kodowanie, format dat i jednostki. Sam zapis XLSX jako CSV nie gwarantuje zgodności z każdym systemem. Obejrzyj tekstowy wynik i ponownie sprawdź próbkę. Kolory, formuły jako mechanizm obliczeń i dodatkowe arkusze nie przenoszą się do zwykłego pliku tekstowego w taki sposób jak w skoroszycie.

Co zrobić z błędami konwersji

Jeśli po ustawieniu typu pojawią się błędy, najpierw obejrzyj kilka konkretnych rekordów. Zapis kwoty może zawierać dodatkowy symbol, data może mieć inny układ, a opis mógł trafić do niewłaściwej kolumny przez uszkodzony separator. To różne przyczyny, więc nie zaczynam od usunięcia wszystkich wierszy z błędem. W ten sposób łatwo zgubić prawidłową transakcję razem z problematycznym zapisem jednego pola.

Ustal, czy reguła źródła jest stała. Jeśli pojedynczy rekord narusza umowę eksportu, warto naprawić źródło. Jeżeli cała kolumna używa innej konwencji niż zakładana, popraw interpretację. W przypadku kilku rzeczywistych formatów w jednej kolumnie potrzebna jest jawna reguła ich rozróżniania. Gdy nie da się jej wiarygodnie ustalić, zostaw dane jako tekst i nazwij ograniczenie zamiast zgadywać daty na podstawie wyglądu.

Nie zastępuję wszystkich błędów zerem. W zestawieniu kwot zero może być prawidłowym zdarzeniem, natomiast błąd informuje, że wartość nie została rozpoznana. Po takim zastąpieniu suma mogłaby wyglądać poprawnie, ale oznaczałaby tylko część danych. Do raportu przydaje się liczba rekordów wymagających wyjaśnienia i informacja, czy wpływają na zakres publikowanego wyniku. Odbiorca powinien widzieć, co udało się policzyć.

Ustal zakres kolejnego eksportu

Przed zautomatyzowaniem odświeżenia sprawdź jeszcze, czy każdy plik zawiera pełny stan, czy tylko nowe rekordy. Zastąpienie pełnego pliku eksportem przyrostowym może sprawić, że po odświeżeniu znikną starsze zgłoszenia. Z kolei dokładanie pełnych eksportów jeden pod drugim może policzyć te same ID wielokrotnie. Separator i typy będą wtedy poprawne, a zbiorczy wynik nadal błędny.

W najprostszym wariancie ćwiczenia plik zawsze zawiera wszystkie rekordy, a nowy zapis zastępuje poprzednią zawartość źródła. Taką umowę da się łatwo sprawdzić: po dopisaniu czwartego rekordu nadal oczekujemy tylko czterech, a nie sumy zawartości obu eksportów. W prawdziwej pracy nazwij tę regułę w instrukcji skoroszytu. Osoba dostarczająca plik musi wiedzieć, co ma się w nim znaleźć, żeby powtarzalny import miał sens.

Ćwiczenie z kontrolowanym importem

Wczytaj zestaw z artykułu, jawnie ustawiając ID jako tekst, Datę jako datę z właściwym regionem i Kwotę jako liczbę z przecinkiem dziesiętnym. Zapisz wynik w osobnym XLSX. Następnie wróć do pliku źródłowego i porównaj każdy z trzech rekordów. Powinieneś umieć wskazać ustawienie odpowiedzialne za kolumny, litery, daty oraz zachowanie kodu 00123.

Potem dopisz do kopii źródła czwarty rekord z nowym ID i kwotą 5,00, zachowując ten sam układ. Po odświeżeniu oczekuj czterech rekordów i sumy 25,00. Jeśli tak się nie stało, sprawdź lokalizację pliku i zapisane kroki. Taki mały eksperyment pokazuje, czy umiesz odtworzyć import, zamiast tylko jednorazowo doprowadzić arkusz do porządnego wyglądu.

Oryginalne nagranie pokazujące temat importu pozostaje poniżej. Bieżący tekst rozwija również kwestie typów, kodowania i kontroli, których wymaga powtarzalna praca na plikach. Gdy źródło jest już uporządkowane, możesz przejść do liczenia zmiany procentowej. Najpierw upewnij się, że porównywane wartości naprawdę są liczbami i opisują te same jednostki.

Najważniejsze w pigułce

Dlaczego CSV otwiera się w jednej kolumnie?

Separator może nie odpowiadać zawartości pliku. Obejrzyj surowy tekst i ustaw rzeczywisty separator w podglądzie importu Z tekstu/CSV.

Jak zachować zera na początku ID?

Ustaw typ Tekst przed konwersją na liczbę. Popraw lub usuń wcześniejszy krok Zmieniono typ i porównaj wynik z niezmienionym źródłem.

Dlaczego daty są błędne mimo właściwego formatu?

Tekst mógł zostać odczytany według innego regionu. Ustaw typ daty przy użyciu regionu źródła; samo formatowanie nie naprawia już błędnie zinterpretowanego dnia.

Przy pracy nad artykułem użyto w zautomatyzowany sposób sztucznej inteligencji. Jeśli też chcesz tak umieć, sprawdź ten projekt.

Kajo Rudziński

Newsletter KajoData

Zostańmy w kontakcie.

Piszę o analizie danych, uczeniu się i zmianie pracy. Dzielę się tym, co pomaga mi ogarniać technologię i zawodowe decyzje. Jeśli lubisz ten sposób myślenia, zapraszam do mojego newslettera.