R Academy · Les

Excel-bestanden importeren met readxl

Lees .xls- en .xlsx-bladen met opties voor bladselectie en celbereiken.

Les 3 van 413 stappen

Excel-bestanden importeren met readxl is een gratis R Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject R Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus R Academy bevat in totaal 4 lessen.

Waarom readxl voor Excel-bestanden?

Excel-bestanden (.xlsx en .xls) zijn alomtegenwoordig in zakelijke omgevingen. Het pakket readxl leest ze zonder dat Excel geïnstalleerd hoeft te zijn en zonder afhankelijkheden van Java. Het geeft een tibble terug en ondersteunt meerdere werkbladen, benoemde bereiken en detectie van celtypen.

library(readxl)

# readxl can read:
# .xlsx  - modern Excel format (XML-based)
# .xls   - older Excel format (binary)
# .xlsm  - Excel with macros (reads data, ignores macros)

# Core functions:
# read_excel()   - auto-detects .xls vs .xlsx
# read_xlsx()    - always reads as .xlsx
# read_xls()     - always reads as .xls
# excel_sheets() - lists all sheet names

cat('readxl requires no Java, no Excel installation!')

excel_sheets() — Alle werkbladen weergeven

excel_sheets('file.xlsx') geeft een character-vector met alle namen van werkbladen terug. Gebruik dit vóór het lezen om de structuur van de werkmap te bekijken en geef vervolgens de naam van het werkblad door aan read_excel().

library(readxl)

# Using readxl's built-in example file
path <- readxl_example('datasets.xlsx')

# List all sheets in the workbook
sheets <- excel_sheets(path)
print(sheets)

cat('\nNumber of sheets:', length(sheets))

read_excel() — Basisgebruik

read_excel(path) leest standaard het eerste werkblad. De functie detecteert automatisch of het bestand .xls of .xlsx is. Het resultaat is een tibble waarvan de kolomtypen op basis van de gegevens worden geschat.

library(readxl)

path <- readxl_example('datasets.xlsx')

# Read the first sheet (default)
df <- read_excel(path)
print(head(df, 4))
cat('\nDimensions:', nrow(df), 'rows x', ncol(df), 'cols')

Argument sheet — Selecteren op naam of index

Gebruik sheet='Sheet1' om op naam te selecteren of sheet=2 om op positie te selecteren (met indexering vanaf 1). Beide zijn geldig. Namen zijn robuuster als de volgorde van werkbladen verandert; indices zijn handig voor iteratie.

library(readxl)

path <- readxl_example('datasets.xlsx')
sheets <- excel_sheets(path)
print(sheets)

# Read by name
df_name <- read_excel(path, sheet = 'iris')
cat('iris sheet rows:', nrow(df_name), '\n')

# Read by index
df_idx <- read_excel(path, sheet = 2)
cat('Sheet 2 rows:', nrow(df_idx))

range — Een celbereik lezen

range='A1:D10' leest alleen het opgegeven celbereik in Excel-notatie. Dit is handig wanneer een werkblad meerdere tabellen bevat, opmaakranden heeft of metagegevens buiten het gegevensgebied bevat die je nodig hebt.

library(readxl)

path <- readxl_example('datasets.xlsx')

# Read only the first 5 data rows of columns A-D
df <- read_excel(path, sheet='iris', range='A1:D6')
print(df)
cat('\nShape:', nrow(df), 'rows,', ncol(df), 'cols')

col_names — Aangepaste kolomnamen

Stel col_names=FALSE in om de kopregel over te slaan en kolommen automatisch een naam te geven. Geef een character-vector door aan col_names om aangepaste namen te gebruiken (en de kopregel over te slaan). Combineer dit met skip als de kopregel op een andere regel staat.

library(readxl)

path <- readxl_example('datasets.xlsx')

# Read with custom column names (skip original header)
df <- read_excel(
  path,
  sheet = 'iris',
  col_names = c('sepal_l','sepal_w','petal_l','petal_w','species'),
  skip = 1  # Skip the original header row
)

print(head(df, 3))
print(names(df))

Argument skip — Regels met metagegevens overslaan

skip=n slaat de eerste n regels van het werkblad over voordat het lezen begint. Dit is handig wanneer werkbladen rapporttitels, aanmaakdatums of andere metagegevens boven de eigenlijke gegevenstabel bevatten.

library(readxl)

# Simulating a sheet with metadata rows (using a range instead)
path <- readxl_example('datasets.xlsx')

# Skip first row (pretend it has a title)
# and read only first 5 data rows
df <- read_excel(
  path,
  sheet = 'chickwts',
  skip = 1,       # Skip first data row
  col_names = FALSE  # Row 2 has no header now
)

print(head(df, 4))

col_types — Kolomtypen opgeven

Gebruik col_types om de schatting van typen te overschrijven. Geldige typen zijn: 'text', 'numeric', 'date', 'logical', 'skip' (verwijdert de kolom) en 'list' (voor kolommen met gemengde typen).

library(readxl)

path <- readxl_example('datasets.xlsx')

# Read with explicit column types
# iris sheet: 4 numeric + 1 text
df <- read_excel(
  path,
  sheet = 'iris',
  col_types = c('numeric','numeric','numeric','numeric','text')
)

print(sapply(df, class))

Alle werkbladen lezen met map()

Combineer excel_sheets() met purrr::map() om alle werkbladen tegelijk in een benoemde lijst te lezen. Elk lijstelement is een tibble voor dat werkblad. Gebruik map_df(.id='sheet') om alle werkbladen als rijen samen te voegen.

library(readxl)
library(purrr)

path <- readxl_example('datasets.xlsx')
sheets <- excel_sheets(path)

# Read all sheets into a named list
all_data <- map(sheets, ~read_excel(path, sheet=.x))
names(all_data) <- sheets

# Show dimensions of each sheet
map_df(all_data, function(df) {
  data.frame(rows=nrow(df), cols=ncol(df))
}, .id='sheet')

n_max — Het aantal gelezen regels beperken

n_max=n leest maximaal n gegevensregels (de kopregel niet meegerekend). Gebruik dit om grote werkbladen te bekijken, een steekproef te laden om te testen of gegevens in blokken te lezen in omgevingen met beperkte geheugencapaciteit.

library(readxl)

path <- readxl_example('datasets.xlsx')

# Preview just the first 5 rows
preview <- read_excel(path, sheet='iris', n_max=5)
print(preview)
cat('\nPreviewed', nrow(preview), 'of', nrow(read_excel(path, sheet='iris')), 'rows')

na Argument — Tekenreeksen voor ontbrekende waarden

Net als readr accepteert readxl een na-argument dat aangeeft welke tekenreeksen als NA moeten worden ingelezen. Excel slaat ontbrekende waarden vaak op als lege cellen (die automatisch worden verwerkt) of als speciale tekenreeksen zoals 'N/A' of '#N/A'.

library(readxl)

path <- readxl_example('datasets.xlsx')

# Handle Excel error strings and custom NA markers
# In real files these might be '#N/A', '#VALUE!', 'N/A', '-'
df <- read_excel(
  path,
  sheet = 'iris',
  na = c('', 'NA', 'N/A', '#N/A', '-')
)

cat('Missing values per column:\n')
print(colSums(is.na(df)))

Korte controle

Wat levert excel_sheets('file.xlsx') op?

Samenvatting: Excel-bestanden importeren

Belangrijkste punten voor het importeren van Excel met readxl:

  • excel_sheets(path) — alle werkbladnamen weergeven
  • read_excel(path) — het eerste werkblad lezen; detecteert automatisch .xls/.xlsx
  • sheet='Name' of sheet=2 — werkblad selecteren op naam of index
  • range='A1:D10' — een specifiek celbereik lezen
  • col_names, skip — met metagegevensrijen en aangepaste kolomkoppen omgaan
  • col_types = c('text','numeric','date','skip') — automatisch geraden typen overschrijven
  • n_max=5 — grote bestanden vooraf bekijken; na=c('N/A','#N/A') — aangepaste tekenreeksen voor NA
  • Combineren met map(excel_sheets(path), ~read_excel(path, sheet=.x)) om alle werkbladen te lezen
library(readxl)
library(purrr)

path <- readxl_example('datasets.xlsx')

# Full workflow: discover, select, read
cat('Sheets available:', paste(excel_sheets(path), collapse=', '), '\n\n')

# Read a specific sheet with explicit types
df <- read_excel(
  path,
  sheet = 'iris',
  col_types = c('numeric','numeric','numeric','numeric','text'),
  n_max = 5
)

print(df)
Gratis beginnen

Leer R met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
43
Lessen
159

Veelgestelde vragen

Is de les “Excel-bestanden importeren met readxl” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad R Academy, waaronder “Excel-bestanden importeren met readxl”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus R Academy bevat in totaal 4 lessen.

Wat leer ik in “Excel-bestanden importeren met readxl”?

Lees .xls- en .xlsx-bladen met opties voor bladselectie en celbereiken. Je oefent met R Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met R Academy te beginnen?

Ervaring vooraf is niet nodig. R Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Excel-bestanden importeren met readxl”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over R Academy?

Ja. Elke les over R Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. CSV-bestanden lezen met read_csv()
  2. TSV- en bestanden met vaste breedte parsen
  3. Excel-bestanden importeren met readxl
  4. Gegevens naar meerdere indelingen schrijven
← Terug naar R Academy