0Pricing
R Academy · Урок

Импорт Excel-файлов с помощью readxl

Читайте листы .xls и .xlsx, выбирая лист и диапазон ячеек.

«Импорт Excel-файлов с помощью readxl» — бесплатный урок R Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения R Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс R Academy содержит 4 уроков всего.

Почему readxl для файлов Excel?

Файлы Excel (.xlsx и .xls) повсеместно используются в деловой среде. Пакет readxl считывает их без установленного Excel и без зависимостей от Java. Он возвращает тиббл и поддерживает несколько листов, именованные диапазоны и определение типов ячеек.

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() — список всех листов

excel_sheets('file.xlsx') возвращает строковый вектор со всеми именами листов. Используйте эту функцию перед считыванием, чтобы изучить структуру книги, а затем передайте имя листа в 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() — базовое использование

read_excel(path) по умолчанию считывает первый лист. Функция автоматически определяет, является ли файл форматом .xls или .xlsx. Результатом будет тиббл с типами столбцов, определёнными по данным.

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

Аргумент sheet — выбор по имени или индексу

Используйте sheet='Sheet1', чтобы выбрать лист по имени, или sheet=2, чтобы выбрать его по позиции (нумерация начинается с 1). Оба варианта допустимы. Имена надёжнее, если порядок листов может измениться; индексы удобны при итерации.

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 — считывание диапазона ячеек

range='A1:D10' считывает только указанный диапазон ячеек в нотации Excel. Это полезно, если на листе находится несколько таблиц, есть границы форматирования или за пределами области данных имеются ненужные метаданные.

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 — пользовательские имена столбцов

Установите col_names=FALSE, чтобы пропустить строку заголовков и автоматически назвать столбцы. Передайте в col_names строковый вектор, чтобы использовать собственные имена (и пропустить строку заголовков). Если заголовок находится в другой строке, добавьте skip.

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

Аргумент skip — пропуск строк метаданных

skip=n пропускает первые n строк листа перед считыванием. Это полезно, если над таблицей данных на листе находятся название отчёта, дата создания или другие метаданные.

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 — указание типов столбцов

Используйте col_types, чтобы переопределить определение типов. Допустимые типы: 'text', 'numeric', 'date', 'logical', 'skip' (удаляет столбец) и 'list' (для столбцов со смешанными типами).

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

Считывание всех листов с помощью map()

Объедините excel_sheets() с purrr::map(), чтобы сразу считать все листы в именованный список. Каждый элемент списка будет тибблом для соответствующего листа. Используйте map_df(.id='sheet'), чтобы объединить все листы по строкам.

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 — ограничение числа считываемых строк

n_max=n считывает не более n строк данных (без строки заголовков). Используйте этот параметр для предварительного просмотра больших листов, загрузки выборки для тестирования или считывания данных фрагментами в средах с ограниченной памятью.

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 — строки для пропущенных значений

Как и readr, пакет readxl принимает аргумент na, задающий, какие текстовые строки следует считывать как NA. В Excel пропущенные значения часто хранятся как пустые ячейки (они обрабатываются автоматически) или как специальные строки, например 'N/A' или '#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)))

Быстрая проверка

Что возвращает excel_sheets('file.xlsx')?

Итоги: импорт файлов Excel

Основные выводы об импорте Excel с помощью readxl:

  • excel_sheets(path) — перечисляет имена всех листов
  • read_excel(path) — считывает первый лист и автоматически определяет форматы .xls/.xlsx
  • sheet='Name' или sheet=2 — выбирает лист по имени или индексу
  • range='A1:D10' — считывает указанный диапазон ячеек
  • col_names, skip — обрабатывает строки с метаданными и настраиваемыми заголовками
  • col_types = c('text','numeric','date','skip') — переопределяет автоматическое определение типов
  • n_max=5 — позволяет просмотреть большие файлы; na=c('N/A','#N/A') — задаёт пользовательские строки для NA
  • Объединяйте с map(excel_sheets(path), ~read_excel(path, sheet=.x)), чтобы обработать все листы
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)

Часто задаваемые вопросы

Урок «Импорт Excel-файлов с помощью readxl» бесплатный?

Да — полный текст урока «Импорт Excel-файлов с помощью readxl» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс R Academy, подпишись на CoddyKit PRO. Курс R Academy содержит 4 уроков всего.

Чему я научусь в уроке «Импорт Excel-файлов с помощью readxl»?

Читайте листы .xls и .xlsx, выбирая лист и диапазон ячеек. Ты практикуешь R Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать R Academy?

Предыдущий опыт не требуется. R Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Импорт Excel-файлов с помощью readxl»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке R Academy?

Да. Каждый урок R Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Чтение CSV-файлов с помощью read_csv()
  2. Разбор TSV-файлов и файлов фиксированной ширины
  3. Импорт Excel-файлов с помощью readxl
  4. Запись данных в разных форматах
← Назад к R Academy