0Pricing
R Academy · Lección

Importación de archivos de Excel con readxl

Lea hojas .xls y .xlsx con opciones de selección de hoja y rango de celdas.

Importación de archivos de Excel con readxl es una lección gratuita de R Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de R Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de R Academy incluye 4 lecciones en total.

¿Por qué usar readxl para archivos de Excel?

Los archivos de Excel (.xlsx y .xls) son omnipresentes en entornos empresariales. El paquete readxl los lee sin necesidad de tener Excel instalado y no depende de Java. Devuelve un tibble y gestiona varias hojas, rangos con nombre y la detección de tipos de celda.

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() — Enumerar todas las hojas

excel_sheets('file.xlsx') devuelve un vector de caracteres con los nombres de todas las hojas. Úselo antes de leer para inspeccionar la estructura del libro y, después, pase el nombre de la hoja 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() — Uso básico

read_excel(path) lee la primera hoja de forma predeterminada. Detecta automáticamente si el archivo es .xls o .xlsx. El resultado es un tibble cuyos tipos de columna se infieren a partir de los datos.

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

Argumento sheet — Seleccionar por nombre o índice

Use sheet='Sheet1' para seleccionar por nombre o sheet=2 para seleccionar por posición (con índices desde 1). Ambas opciones son válidas. Usar nombres es más resistente a cambios en el orden de las hojas; usar índices resulta práctico para la iteración.

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 — Leer un rango de celdas

range='A1:D10' lee únicamente el rango de celdas especificado mediante la notación de Excel. Esto resulta útil cuando una hoja contiene varias tablas, tiene bordes de formato o incluye metadatos fuera del área de datos que necesita.

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 — Nombres de columna personalizados

Establezca col_names=FALSE para omitir la fila de encabezado y asignar nombres automáticos a las columnas. Pase un vector de caracteres a col_names para usar nombres personalizados (y omitir la fila de encabezado). Combine esta opción con skip si el encabezado está en otra fila.

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

Argumento skip — Omitir filas de metadatos

skip=n omite las primeras n filas de la hoja antes de leerla. Es útil cuando las hojas de cálculo contienen títulos de informes, fechas de generación u otros metadatos encima de la tabla de datos real.

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 — Especificar los tipos de columna

Use col_types para reemplazar la inferencia de tipos. Tipos válidos: 'text', 'numeric', 'date', 'logical', 'skip' (descarta la columna) y 'list' (para columnas con tipos mixtos).

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

Leer todas las hojas con map()

Combine excel_sheets() con purrr::map() para leer todas las hojas a la vez en una lista con nombre. Cada elemento de la lista es un tibble correspondiente a esa hoja. Use map_df(.id='sheet') para combinar todas las hojas por filas.

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 — Limitar las filas leídas

n_max=n lee como máximo n filas de datos (sin incluir el encabezado). Úselo para previsualizar hojas de cálculo grandes, cargar una muestra para realizar pruebas o leer los datos por bloques en entornos con memoria limitada.

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

Argumento na — Cadenas de valores faltantes

Al igual que readr, readxl acepta un argumento na que especifica qué cadenas de texto deben leerse como NA. Excel suele almacenar los valores faltantes como celdas vacías (que se gestionan automáticamente) o como cadenas indicadoras, como '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)))

Comprobación rápida

¿Qué devuelve excel_sheets('file.xlsx')?

Resumen: importar archivos de Excel

Aspectos clave de la importación de Excel con readxl:

  • excel_sheets(path) — enumera los nombres de todas las hojas
  • read_excel(path) — lee la primera hoja y detecta automáticamente .xls/.xlsx
  • sheet='Name' o sheet=2 — selecciona una hoja por nombre o índice
  • range='A1:D10' — lee un rango específico de celdas
  • col_names, skip — gestiona filas de metadatos y encabezados personalizados
  • col_types = c('text','numeric','date','skip') — anula la inferencia de tipos
  • n_max=5 — permite previsualizar archivos grandes; na=c('N/A','#N/A') — define cadenas NA personalizadas
  • Combine con map(excel_sheets(path), ~read_excel(path, sheet=.x)) para procesar todas las hojas
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)

Preguntas frecuentes

¿La lección «Importación de archivos de Excel con readxl» es gratis?

Sí — el texto completo de «Importación de archivos de Excel con readxl» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de R Academy, actualiza a CoddyKit PRO. El curso de R Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Importación de archivos de Excel con readxl»?

Lea hojas .xls y .xlsx con opciones de selección de hoja y rango de celdas. Practicas R Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar R Academy?

No se requiere experiencia previa. R Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Importación de archivos de Excel con readxl»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de R Academy?

Sí. Cada lección de R Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura de archivos CSV con read_csv()
  2. Análisis de archivos TSV y de ancho fijo
  3. Importación de archivos de Excel con readxl
  4. Escritura de datos en varios formatos
← Volver a R Academy