En import som inte fått regler för stökiga rader väljer själv, och valet syns ofta inte i något meddelande. Du kan beställa fem saker i klartext: hur kolumnerna matchas, vad en tom cell betyder, vad som händer med dubbletter, vilka datum och tal som tas emot, och en rapport som räknar upp varje rad som inte togs och varför. Prova sedan importen på ett litet ark med tio fel du själv lagt in, innan det riktiga arket rörs.
”Klart” säger inte hur många rader som kom in
Det riktiga arket har 412 rader. Du laddar upp det, appen visar ”Import klar” och listan ser full ut. Vad du inte ser är att 9 rader inte kom med: tre saknade e-post, fyra hade ett datum appen inte förstod och två var samma person som redan fanns. Ingen av dem gav ett felmeddelande, för importen fick aldrig någon regel om vad som är ett fel. Den gjorde det enklaste: hoppade över det den inte förstod och fortsatte.
Det andra utfallet är värre än att hoppa över, för det syns ännu senare. Raden kom in, men fel. Beloppet 1 234,50 blev 123 450. Datumet 3 april blev 4 mars. Telefonnumret tappade sin nolla. Varje rad finns i listan, antalet stämmer, och felet upptäcks först när en faktura går ut på fel belopp eller en påminnelse skickas fel dag.
Det tredje utfallet är dubbletter. Arket hade samma medlem på rad 41 och rad 388, en gång med stor bokstav i e-postadressen. Appen tog in båda, för ingen sa att e-posten avgör vem som är vem. Nu får hen två utskick, och den som rättar adressen i den ena posten undrar varför den gamla adressen fortfarande dyker upp.
Alla tre utfallen har samma orsak. Du sa vad som skulle importeras, inte vad som skulle hända med det arket inte kan lova. Den här sidan går åt motsatt håll mot kursens del om att spara data, som exporterar anmälningar ut ur appen till ett kalkylark. Här ska ett ark in, och det är den svårare riktningen.
Fem saker arket bär med sig som appen inte vet
Ett kalkylark ser strukturerat ut, men det är ett papper med rutor. Ingenting i arket säger att kolumnen ”Epost” är samma sak som appens fält ”E-post”, att en tom cell betyder ”vet ej” snarare än ”noll”, eller att två rader med samma adress är samma person. Allt det vet du, och inget av det står i filen. Fem beslut behöver du fatta innan du beställer.
Det sjätte beslutet är det som gör de fem synliga: rapporten. Efter importen ska appen visa tre siffror, antalet rader i arket, antalet importerade och antalet avvisade, och en lista över de avvisade med radnummer och orsak. Utan listan är de fem reglerna löften du inte kan kontrollera.
Beställningen: en import som talar om vad den inte tog
Beställningen nedan är skriven för ett medlemsregister med sex uppgifter. Byt ut fälten i hakparenteserna mot dina egna, men behåll strukturen: först matchningen, sedan reglerna per uppgift, sist rapporten. Den ber uttryckligen om att ingenting ska gissas. Det är den meningen som skiljer en import du kan lita på från en som säger ”Klart”.
Jag vill kunna ladda upp ett kalkylark (Excel eller CSV) med befintliga [medlemmar] till appen. Arket har kolumnerna [Namn, E-post, Telefon, Anmäld, Belopp, Postnummer]. Innan något importeras ska appen visa vilken kolumn i arket som matchas mot vilket fält i appen och låta mig ändra matchningen. En kolumn som inte matchar något fält ska stoppa importen med en fråga, inte hoppas över tyst. Regler per rad: - [Namn] och [E-post] är obligatoriska. Saknas någon av dem ska raden avvisas. - [Telefon, Anmäld, Belopp, Postnummer] är frivilliga. En tom cell ska sparas som tomt fält, inte som 0, inte som text och inte som värdet från raden ovanför. - Två rader med samma [E-post] är samma person, oavsett stora och små bokstäver och mellanslag i början eller slutet. Finns personen redan i appen, eller tidigare i samma ark, ska raden avvisas som dubblett med besked om vilken rad den krockar med. - [Anmäld] ska tas emot bara i formen 2026-09-21. Andra former och datum som inte finns ska avvisas, inte gissas. - [Belopp] ska ta emot decimalkomma och mellanslag mellan tusental, så att 1 234,50 sparas som 1234,50. Text i kolumnen ska avvisas, inte bli 0. - [Telefon] och [Postnummer] är text, inte tal. En nolla i början ska behållas. Ett telefonnummer som inte börjar med 0 eller + ska avvisas. - En helt tom rad ska hoppas över utan att räknas som avvisad, och importen ska fortsätta med raderna efter den. Efter importen ska appen visa: antal rader med innehåll i arket, antal importerade, antal avvisade, och en lista över varje avvisad rad med radnummer, orsak och radens innehåll. Antalet rader med innehåll ska vara summan av importerade och avvisade. Ingen rad får ändras tyst för att passa; det som inte följer reglerna ska avvisas och stå i listan. Förklara i klartext, utan kodord, vad som händer med en rad som bryter mot två regler samtidigt. Ändra ingenting annat.
Två val i beställningen kan du vilja göra annorlunda. En dubblett kan uppdatera den befintliga posten i stället för att avvisas, och det är rimligt om arket är nyare än appen. Byt då ”avvisas som dubblett” mot ”uppdatera den befintliga posten och räkna raden som uppdaterad, inte importerad” och lägg till ”uppdaterade” som en fjärde siffra i rapporten. Och datumregeln kan vara mjukare om du vet att hela arket har formen 21/9/2026. Säg då exakt den formen, en enda, och inte ”svenska datum”.
Testarket: tio avsiktliga fel före det riktiga arket
Prova inte importen på det riktiga arket först. Gör ett litet ark med samma kolumner, 14 rader, där du vet exakt vilka rader som ska komma in och vilka som ska avvisas. Rad 1 och 2 är helt rätt. Rad 3 till 12 bär var sitt fel. Rad 13 och 14 är helt rätt igen, och de finns där för att avslöja en import som stannar vid den tomma raden.
Rad 1 och 2: två helt korrekta rader.
Rad 3: namnet saknas (tom cell i en uppgift appen kräver).
Rad 4: telefonen saknas (tom cell i en uppgift appen inte kräver).
Rad 5: samma e-post som rad 1, namnet stavat annorlunda.
Rad 6: samma e-post som rad 2 med stora bokstäver och ett
mellanslag sist.
Rad 7: datumet skrivet 21/9/2026.
Rad 8: datumet 2026-02-30, som inte finns.
Rad 9: beloppet skrivet 1 234,50 med mellanslag och
decimalkomma.
Rad 10: beloppet skrivet ca 500.
Rad 11: telefonnumret 701234567, med nollan borta.
Rad 12: en helt tom rad.
Rad 13 och 14: två helt korrekta rader.
Facit följer av beställningen. Rad 1, 2, 4, 9, 13 och 14 ska komma in: 6 rader, varav rad 4 med tomt telefonfält och rad 9 med beloppet sparat som 1234,50. Rad 3, 5, 6, 7, 8, 10 och 11 ska avvisas: 7 rader, var och en med sin orsak. Rad 12 ska varken räknas som importerad eller avvisad. Rapporten ska alltså säga 13 rader med innehåll, 6 importerade, 7 avvisade. Skriv de tre siffrorna på ett papper innan du laddar upp arket.
Att listan har 412 poster efter importen av det riktiga arket säger inte att rätt 412 kom in. Rad 41 och rad 388 kan båda vara där, och den tomma raden på 200 kan ha stoppat allt efter sig utan att det syns i en lista som ändå ser lång ut. Beviset är rapportens tre siffror och att de summerar: rader med innehåll är lika med importerade plus avvisade. Stämmer inte summan har rader försvunnit på vägen utan att räknas.
Sedan det riktiga arket, i tre omgångar
När testarket ger 13, 6, 7 och facit stämmer på alla sex stegen är importen redo för riktiga rader. Kör ändå inte alla 412 på en gång. Ta de första 20 raderna i ett eget ark, importera, läs rapporten och öppna varje avvisad rad i det riktiga arket. Nu ser du vilka fel det riktiga arket faktiskt har, och de är sällan de tio du hittade på. Kanske är det ett fjärde datumformat, eller en kolumn där någon skrivit ”se anteckning” i beloppsfältet.
Rätta de raderna i arket, inte i appen. Ett ark du rättat kan importeras om; en post du rättat inne i appen är borta om du behöver börja om. Kör sedan resten av arket, läs de tre siffrorna, rätta det som avvisades och kör de rättade raderna som en tredje omgång. Efter den tredje omgången ska antalet avvisade vara noll och antalet poster i appen vara lika med antalet rader med innehåll i arket minus dubbletterna rapporten pekade ut.
Spara testarket och de tre siffrorna som en rad i din provlista. Importen är en funktion som slutar fungera vid ändringar ingen kopplade till den, till exempel när du ber verktyget lägga till ett fält i formuläret och det bygger om vilka uppgifter som är obligatoriska.
Var beställningen slutar
Beställningen ovan säger ingenting om hur verktyget läser filen, och det är avsiktligt. Om verktyget svarar med ord som ”parser” (den del som läser filen rad för rad och delar upp den i celler) eller ”schema” (beskrivningen av vilka fält som finns och vilken sorts värde vart och ett tar) behöver du inte förstå dem. Du behöver bara kontrollera att rapporten finns och att siffrorna stämmer mot testarket. Samma mönster, beställ beteendet i klartext och läs av utfallet i ett prov, är det artikeln om två användare som gör samma sak samtidigt använder för ett helt annat problem.
Två saker täcker den här sidan inte. Den första är ett ark med flera flikar eller sammanslagna celler; det är inte en tabell utan ett dokument, och det ska göras om till en enkel tabell i kalkylprogrammet innan det importeras. Den andra är ett ark som ska importeras om varje vecka från ett annat system. Då är frågan inte längre en import utan en koppling, med egna regler om vem som vinner när samma post ändrats på båda ställena, och det är en annan beställning. Beställningen och testarket ovan kontrollerades 21 september 2026.
Klart när rapporten säger vad som inte kom in
Arbetet är klart när testarket ger de tre siffror du skrev på pappret, när varje avvisad rad står i rapporten med radnummer och orsak, när samma ark kört två gånger inte ger dubbla poster, och när det riktiga arket efter tredje omgången har noll avvisade rader och ett antal poster du kan räkna fram. Du behöver inte veta hur verktyget läste filen. Du behöver kunna visa vilka rader det inte tog.
Vilka uppgifter är obligatoriska, och vad avgör att två rader är samma person? Vilken enda form ska datum och belopp ha? Och när körde jag senast testarket med de tio felen?