العمل مع Excel في Rust: مكتبات لقراءة وكتابة الجداول

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع Excel في Rust: نظرة عامة على المكتبات وأمثلة الكود



لغة Rust، المعروفة بأدائها وأمانها، توفر إمكانيات ممتازة للعمل مع جداول بيانات Excel. في هذه المقالة، سنستعرض ثلاث مكتبات الأكثر شيوعًا: rust_xlsxwriter و calamine و xlsx. ستتعلم كيفية قراءة وإنشاء وتعديل ملفات بصيغة .xlsx، بالإضافة إلى تطبيق وظائف التنسيق المتقدمة.



لماذا Rust للعمل مع Excel؟

تعتبر Rust مثالية لمهام معالجة البيانات بفضل:

  • تكلفة صفرية للتجريدات - سرعة عالية في العمل مع الملفات الكبيرة؛
  • عمل آمن مع الذاكرة - استبعاد تسرب الذاكرة وأخطاء التجزئة؛
  • التوافق عبر المنصات - يعمل الكود على Windows و macOS و Linux؛
  • تكامل ممتاز مع الأنظمة الأخرى عبر FFI.


مكتبة rust_xlsxwriter: إنشاء ملفات Excel

rust_xlsxwriter هي مكتبة حديثة لإنشاء ملفات Excel مع إمكانيات تنسيق غنية. تدعم الأنماط ودمج الخلايا والصيغ والتنسيق الشرطي.



التثبيت

أضف إلى Cargo.toml:

[dependencies]rust_xlsxwriter = "0.77"


مثال: إنشاء تقرير مع التنسيق

لننشئ ملفًا بعناوين وبيانات وصيغة:

use rust_xlsxwriter::*;

fn main() -> Result<(), XlsxError> { let mut workbook = Workbook::new(); let worksheet = workbook.add_worksheet();

// إنشاء الأنماط let header_format = Format::new() .set_bold() .set_font_color(Color::White) .set_background_color(Color::Blue) .set_border(FormatBorder::Thin);

let money_format = Format::new() .set_num_format("$#,##0.00") .set_border(FormatBorder::Thin);

// العناوين worksheet.write_with_format(0, 0, "المنتج", &header_format)?; worksheet.write_with_format(0, 1, "الكمية", &header_format)?; worksheet.write_with_format(0, 2, "السعر", &header_format)?; worksheet.write_with_format(0, 3, "المجموع", &header_format)?;

// البيانات let items = vec![ ("لابتوب", 5, 1200.00), ("فأرة", 10, 25.50), ("لوحة مفاتيح", 7, 45.00), ];

for (i, (name, qty, price)) in items.iter().enumerate() { let row = i as u32 + 1; worksheet.write(row, 0, name)?; worksheet.write(row, 1, *qty)?; worksheet.write_with_format(row, 2, *price, &money_format)?; // الصيغة: الكمية * السعر worksheet.write_formula(row, 3, &format!("B{}*C{}", row+1, row+1))?; }

// العرض التلقائي للأعمدة worksheet.set_column_width(0, 15)?; worksheet.set_column_width(1, 12)?; worksheet.set_column_width(2, 10)?; worksheet.set_column_width(3, 12)?;

workbook.save("report.xlsx")?; println!("تم إنشاء الملف report.xlsx!"); Ok(())}


مكتبة calamine: قراءة ملفات Excel

calamine هي محلل سريع لقراءة ملفات Excel (.xlsx و .xls و .xlsb). لا يتطلب تثبيت Excel ويعمل بالكامل في الذاكرة.



التثبيت

[dependencies]calamine = "0.24"


مثال: قراءة البيانات من ملف

لنقرأ الملف الذي تم إنشاؤه سابقًا ونعرض البيانات في وحدة التحكم:

use calamine::{open_workbook, Reader, Xlsx};

fn main() -> Result<(), Box> { let path = "report.xlsx"; let mut workbook: Xlsx<_> = open_workbook(path)?;

if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") { println!("محتوى الملف {}:", path); println!("{:-<40}", "");

for row in range.rows() { for cell in row { match cell { calamine::Data::Stri

توصيات