0Pricing
R Academy · Lezione

Importazione di file Excel con readxl

Legga fogli .xls e .xlsx con opzioni per selezionare il foglio e l'intervallo di celle.

Importazione di file Excel con readxl è una lezione R Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento R Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso R Academy include 4 lezioni in totale.

Perché usare readxl per i file Excel?

I file Excel (.xlsx e .xls) sono onnipresenti negli ambienti aziendali. Il pacchetto readxl li legge senza richiedere l'installazione di Excel e senza dipendenze da Java. Restituisce un tibble e gestisce più fogli, intervalli denominati e rilevamento dei tipi delle celle.

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() — Elencare tutti i fogli

excel_sheets('file.xlsx') restituisce un vettore di caratteri contenente i nomi di tutti i fogli. Lo usi prima della lettura per esaminare la struttura della cartella di lavoro, quindi passi il nome del foglio a 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() — Utilizzo di base

read_excel(path) legge per impostazione predefinita il primo foglio. Rileva automaticamente se il file è .xls o .xlsx. Il risultato è un tibble con i tipi delle colonne dedotti dai dati.

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')

Argomento sheet — Selezionare per nome o indice

Usi sheet='Sheet1' per selezionare un foglio per nome oppure sheet=2 per selezionarlo in base alla posizione (indicizzata a partire da 1). Entrambe le modalità sono valide. I nomi sono più robusti se cambia l'ordine dei fogli; gli indici sono comodi per l'iterazione.

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 — Leggere un intervallo di celle

range='A1:D10' legge solo l'intervallo di celle specificato nella notazione di Excel. È utile quando un foglio contiene più tabelle, bordi di formattazione o metadati esterni all'area dei dati che deve leggere.

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 — Nomi personalizzati delle colonne

Imposti col_names=FALSE per saltare la riga di intestazione e assegnare automaticamente i nomi alle colonne. Passi a col_names un vettore di caratteri per usare nomi personalizzati e saltare la riga di intestazione. Combini questa opzione con skip se l'intestazione si trova in un'altra riga.

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))

Argomento skip — Saltare le righe dei metadati

skip=n salta le prime n righe del foglio prima della lettura. È utile quando i fogli di lavoro contengono titoli del rapporto, date di generazione o altri metadati sopra la tabella dei dati effettiva.

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 — Specificare i tipi delle colonne

Usi col_types per sovrascrivere l'inferenza dei tipi. I tipi validi sono: 'text', 'numeric', 'date', 'logical', 'skip' (elimina la colonna) e 'list' (per colonne con tipi misti).

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))

Leggere tutti i fogli con map()

Combini excel_sheets() con purrr::map() per leggere contemporaneamente tutti i fogli in una lista denominata. Ogni elemento della lista è un tibble corrispondente a quel foglio. Usi map_df(.id='sheet') per concatenare per righe tutti i fogli.

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 — Limitare le righe lette

n_max=n legge al massimo n righe di dati, senza contare l'intestazione. Lo usi per visualizzare l'anteprima di fogli di lavoro grandi, caricare un campione per i test o leggere i dati in blocchi in ambienti con memoria limitata.

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')

Argomento na — stringhe di valori mancanti

Come readr, readxl accetta un argomento na che specifica quali stringhe di testo devono essere lette come NA. Excel memorizza spesso i valori mancanti come celle vuote (gestite automaticamente) oppure come stringhe sentinella quali 'N/A' o '#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)))

Verifica rapida

Che cosa restituisce excel_sheets('file.xlsx')?

Riepilogo: importazione di file Excel

Punti chiave per importare file Excel con readxl:

  • excel_sheets(path) — elenca tutti i nomi dei fogli
  • read_excel(path) — legge il primo foglio e rileva automaticamente i file .xls/.xlsx
  • sheet='Name' o sheet=2 — seleziona il foglio per nome o indice
  • range='A1:D10' — legge un intervallo specifico di celle
  • col_names, skip — gestisce le righe di metadati e le intestazioni personalizzate
  • col_types = c('text','numeric','date','skip') — sovrascrive il rilevamento automatico dei tipi
  • n_max=5 — visualizza in anteprima i file di grandi dimensioni; na=c('N/A','#N/A') — stringhe NA personalizzate
  • Combina con map(excel_sheets(path), ~read_excel(path, sheet=.x)) per tutti i fogli
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)

Domande Frequenti

La lezione «Importazione di file Excel con readxl» è gratuita?

Sì — il testo completo di «Importazione di file Excel con readxl» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso R Academy, passa a CoddyKit PRO. Il corso R Academy include 4 lezioni in totale.

Cosa imparerò in «Importazione di file Excel con readxl»?

Legga fogli .xls e .xlsx con opzioni per selezionare il foglio e l'intervallo di celle. Eserciti R Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare R Academy?

Non è richiesta alcuna esperienza precedente. R Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Importazione di file Excel con readxl»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione R Academy?

Sì. Ogni lezione R Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Lettura di file CSV con read_csv()
  2. Analisi di file TSV e a larghezza fissa
  3. Importazione di file Excel con readxl
  4. Scrittura dei dati in più formati
← Torna a R Academy