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. كما تُرجع tibble، وتتعامل مع أوراق متعددة، ونطاقات مسمّاة، واكتشاف أنواع الخلايا.

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') متجهًا من character يحتوي على أسماء جميع الأوراق. استخدمها قبل القراءة لفحص بنية المصنف، ثم مرّر اسم الورقة إلى 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. وتكون النتيجة tibble مع تخمين أنواع الأعمدة من البيانات.

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 لتجاوز صف العناوين وتسميّة الأعمدة تلقائيًا. مرّر متجهًا من character إلى 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() لقراءة جميع الأوراق دفعة واحدة في قائمة مسمّاة. ويمثّل كل عنصر في القائمة tibble خاصًا بتلك الورقة. استخدم 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. قراءة ملفات CSV باستخدام read_csv()
  2. تحليل ملفات TSV وذات العرض الثابت
  3. استيراد ملفات Excel باستخدام readxl
  4. كتابة البيانات بتنسيقات متعددة
← العودة إلى R Academy