مقدمة
Aspose.Cells FOSS لـ Rust يجلب عائلة Aspose.Cells FOSS إلى نظام إيكولوجي Rust. الحزمة aspose-cells-foss-rust تتيح لتطبيقات Rust إنشاء دفاتر عمل Excel XLSX من الصفر، تحميل ملفات موجودة، تعديل محتوياتها، وحفظ النتيجة — دون الحاجة لتثبيت Microsoft Office أو أتمتة COM أو أي بيئة تشغيل خارجية.
الحزمة مرخصة تحت MIT وتستهدف إصدار Rust 2021. تتبع conventions التي يتوقعها مطورو Rust: منشئات مثل Workbook::new، معالجة الأخطاء القائمة على Result عبر CellsError، ومُدخلات قابلة للتغيير صريحة مثل get_worksheets_mut و get_cells_mut التي تحافظ على وضوح قواعد الاقتراض. إذا كنت تبني خدمات خلفية، أدوات سطر الأوامر، أو خطوط أنابيب بيانات تحتاج إلى إنتاج أو استهلاك جداول البيانات، فإن هذه المكتبة توفر لك طريقة أصلية للقيام بذلك.
تم مراجعة هذا القسم مقابل نموذج المصدر الحالي لسلوك المنتج الأحدث وتغطية API.
Aspose.Cells FOSS متاح بالفعل لـ .NET، C++، Java، Python، وTypeScript؛ تنضم حزمة Rust إلى العائلة بنفس التركيز: دعم XLSX صادق وقابل للتحقق تحت ترخيصٍ سماحي.
ما الذي يتضمنه
دفاتر العمل، أوراق العمل، وقيم الخلايا ذات النوع
يبدأ Workbook بورقة عمل واحدة ويتوسع عبر add_worksheet. تقبل الخلايا قيمًا ذات نوع — سلاسل، أعداد صحيحة، قيم منطقية، أعداد عشرية، وتواريخ-أوقات — من خلال مُعينات مخصصة، لذا لا حاجة لتحويلات نصية غير مُعرفة:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Hello")?;
cells.get("B1")?.put_value_i32(123)?;
cells.get("C1")?.put_value_bool(true)?;
cells.get("D1")?.put_value_decimal(12.5)?;
}
workbook.save("hello.xlsx")?;
الصيغ مع النتائج المخزنة مؤقتًا
تُكتب الصيغ مع قيمة مخزنة مؤقتًا، لذلك يفتح الملف المحفوظ في Excel بالنتائج الصحيحة فورًا — لا يلزم تمرير إعادة حساب:
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
المخططات المرتبطة بنطاقات البيانات
يمكن تثبيت أنواع المخططات مثل العمود والخط وغيرها من ChartType إلى نطاقات خلايا في ورقة عمل، ويمكن قراءة هندسة المخطط مرة أخرى من الملفات المحملة:
let mut charts = sheet.get_charts();
charts.add(
ChartType::Column,
"Charts!$B$1:$B$13".to_string(),
0,
4,
18,
8,
)?;
التنسيق، إعداد الصفحة، والبنية
تنسيق الخلايا يتم عبر CellStyle مع Font و Fill و Borders، يُطبق بشكل انتقائي باستخدام StyleFlag. يتحكم PageSetup في حجم الورق واتجاهه للطباعة، ويحافظ FreezePane على ظهور صفوف العنوان، وتأتي الجداول المنظمة عبر ListObject مع TableStyleType.
التحقق، التنسيق الشرطي، والفلاتر
ميزات جودة البيانات هي جزء من السطح الأساسي: قواعد Validation مع OperatorType، تنسيق شرطي عبر FormatCondition، فلاتر تلقائية عبر AutoFilter، أسماء معرفة عبر DefinedName، وحماية دفتر العمل أو ورقة العمل عبر WorkbookProtection و WorksheetProtection.
التحميل الدفاعي مع التشخيص
ملفات XLSX في العالم الحقيقي ليست دائمًا ذات بنية صحيحة. LoadOptions تُظهر علامات إصلاح، وLoadDiagnostics تُبلغ ما واجهه المُحمِّل:
let options = LoadOptions {
try_repair_package: true,
try_repair_xml: true,
..LoadOptions::default()
};
let loaded = Workbook::load_xlsx_with_options(&valid_path, &options)?;
println!(
"Loaded workbook with {} worksheet(s) and {} diagnostic issue(s).",
loaded.get_worksheets().count(),
loaded.get_load_diagnostics().issues().len()
);
بدء سريع
أضف الحزمة إلى Cargo.toml الخاص بك كاعتماد git (الحزمة لم تُنشر بعد على crates.io):
# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }ثم أنشئ، احفظ، وأعد تحميل أول مصنف لك:
use aspose_cells_foss_rust::{CellValue, Workbook};
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
// Create a new workbook (starts with one sheet, "Sheet1").
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Hello")?;
cells.get("B1")?.put_value_i32(123)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
}
workbook.save("hello.xlsx")?;
// Load it back.
let loaded = Workbook::load_xlsx("hello.xlsx")?;
let sheet = loaded.worksheet("Sheet1")?;
let cells = sheet.get_cells();
println!("A1 = {}", cells.get("A1")?.display_string_value());
Ok(())
}
الصيغ المدعومة
| تنسيق | امتداد | قراءة | كتابة |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX هو محور الإصدار الحالي: قراءة وكتابة كاملة ذهابًا وإيابًا عبر Workbook::load_xlsx و Workbook::save، مع تعداد LoadFormat و SaveFormat الذي يتحكم في اختيار الصيغة بشكل صريح.
المصدر المفتوح والترخيص
Aspose.Cells FOSS للـ Rust مرخص برخصة MIT. الشيفرة المصدرية الكاملة متاحة على GitHub، وترخيصها يسمح بالاستخدام التجاري والتعديل وإعادة التوزيع.