परिचय
Aspose.Cells FOSS for Rust अपनी कार्यक्षमता को aspose-cells-foss-rust crate के माध्यम से प्रस्तुत करता है, जो कोर प्रकारों के एक संक्षिप्त सेट पर केंद्रित है: Workbook, Worksheet, Cells, Cell, और DocumentProperties, प्रत्येक के पास लिखने के लिए मिलते-जुलते *Mut एक्सेसर्स हैं। यह पोस्ट उस कोर API सतह का व्यवस्थित दौरा है — न कि कोई एकल विशेषता, बल्कि उन मूलभूत चीज़ों का संग्रह जो crate पर निर्मित हर एप्लिकेशन उपयोग करता है: वर्कशीट बनाना और उनका नामकरण, टाइप्ड सेल वैल्यू पढ़ना और लिखना, दस्तावेज़ मेटाडेटा सेट करना, वर्कशीट की सुरक्षा और छिपाना, पंक्तियों और कॉलम का आकार निर्धारित करना, सेल्स को मर्ज करना, और फ़ाइलों को सुरक्षित रूप से लोड करना।
यह crate MIT लाइसेंस वाला है और Rust संस्करण 2021 को लक्ष्य करता है। लगभग हर संभावित ऑपरेशन Result<_, CellsError> लौटाता है, इसलिए ? ऑपरेटर के साथ त्रुटि संभालना नीचे दिए गए उदाहरणों में उसी तरह चलता है जैसा कि वास्तविक कोड में चलता है। यह crate सब कुछ शून्य से पुनः लागू करने की बजाय एक छोटा सेट रन-टाइम निर्भरताएँ लाता है — chrono तिथि-समय मानों के लिए, zip XLSX पैकेज फ़ॉर्मेट के लिए, roxmltree XML पार्सिंग के लिए, serde_json संरचित डेटा के लिए, sha2 और base64 हैशिंग और एन्कोडिंग के लिए, और getrandom रैंडमनेस के लिए।
नीचे प्रत्येक अनुभाग API के एक क्षेत्र को कवर करता है, जिसमें संबंधित ठोस प्रकार और मेथड्स शामिल हैं, और crate के अपने नमूना कोड से निकाले गए कार्यशील Rust उदाहरणों द्वारा समर्थित है।
मुख्य विशेषताएँ
वर्कबुक और वर्कशीट मूलभूत बातें
एक Workbook Workbook::new() के साथ खाली शुरू होता है, जिसमें एक वर्कशीट "Sheet1" नाम से होती है। अतिरिक्त शीट्स WorksheetsMut::add(name) से आती हैं, जो नई शीट का इंडेक्स लौटाती हैं। Worksheets/WorksheetsMut भी active_sheet_name() और set_active_sheet_name() के माध्यम से यह ट्रैक करते हैं कि कौन सी शीट सक्रिय है।
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Summary")?;
let detail_index = worksheets.add("Detail")?;
let detail = worksheets.get(detail_index)?;
detail.get_cells_mut().get("A1")?.put_value_string("Detail data")?;
worksheets.set_active_sheet_name("Detail")?;
}
let sheets = workbook.get_worksheets();
println!("Worksheet count: {}", sheets.count());
println!("Active sheet: {}", sheets.active_sheet_name());
टाइप किए गए सेल मान और सूत्र
Cells/CellsMut सेल को A1-शैली संदर्भ (get("B3")) या पंक्ति/स्तंभ सूचकांक (get_by_index(row, column)) द्वारा पता करता है। प्रत्येक Cell/CellMut विशेष सेटर्स के माध्यम से टाइप्ड मान स्वीकार करता है, इसलिए स्ट्रिंग-टाइप्ड रूपांतरण की आवश्यकता नहीं होती, और फ़ॉर्मूले एक कैश्ड मान के साथ लिखे जाते हैं ताकि फ़ाइल किसी भी पुनर्गणना से पहले सही परिणामों के साथ खुले।
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)?;
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;
}
workbook.save("typed-values.xlsx")?;
let loaded = Workbook::load_xlsx("typed-values.xlsx")?;
let sheet = loaded.worksheet("Sheet1")?;
let cells = sheet.get_cells();
println!(
"{:?}: {}",
cells.get("B1")?.value_type(),
cells.get("B1")?.display_string_value()
);
println!("G1 cached value -> {}", cells.get("G1")?.display_string_value());
दस्तावेज़ गुण
Workbook::get_document_properties_mut() एक DocumentProperties ऑब्जेक्ट तक पहुँचता है जो सामान्य मेटाडेटा फ़ील्ड्स (शीर्षक, विषय, लेखक, कुंजीशब्द, श्रेणी, कंपनी) को कवर करता है, साथ ही OOXML कोर/विस्तारित प्रॉपर्टी सेट्स के लिए एक नेस्टेड CoreDocumentProperties (get_core_mut()) और ExtendedDocumentProperties (get_extended_mut()) भी है।
{
let properties = workbook.get_document_properties_mut();
properties.set_title("Annual Sales Report 2024");
properties.set_subject("Financial Performance Analysis");
properties.set_author("Finance Department");
properties.set_keywords("sales, finance, 2024, report");
properties.set_category("Financial Reports");
properties.set_company("Acme Corporation");
let core = properties.get_core_mut();
core.set_creator("Finance Department");
core.set_created(Some(Utc::now()));
let extended = properties.get_extended_mut();
extended.set_company("Acme Corporation");
}
workbook.save("with-properties.xlsx")?;
let loaded = Workbook::load_xlsx("with-properties.xlsx")?;
let properties = loaded.get_document_properties();
println!("Title: {}", properties.get_title());
println!("Core creator: {}", properties.get_core().get_creator());
वर्कशीट संरक्षण और दृश्यता
एक Worksheet को set_visibility_type(VisibilityType::Hidden) से छिपाया जा सकता है, set_tab_color से रंगा जा सकता है, और protect() के साथ साथ एक WorksheetProtection ऑब्जेक्ट ( get_protection_mut() के माध्यम से) द्वारा लॉक किया जा सकता है, जो ठीक-ठीक नियंत्रित करता है कि कौन-सी क्रियाएँ — सेल का फॉर्मेटिंग, लॉक्ड सेल का चयन, आदि — संरक्षण चालू होने पर उपलब्ध रहें।
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let layout = worksheets.get(0)?;
layout.set_name("Layout")?;
layout.set_visibility_type(VisibilityType::Hidden);
layout.set_tab_color(Color::from_argb(255, 34, 68, 102));
layout.set_show_gridlines(false);
layout.set_right_to_left(true);
layout.set_zoom(85)?;
layout.protect();
let protection = layout.get_protection_mut();
protection.set_objects(true);
protection.set_format_cells(true);
protection.set_select_locked_cells(true);
}
workbook.save("protected.xlsx")?;
let loaded = Workbook::load_xlsx("protected.xlsx")?;
let sheet = loaded.worksheet("Layout")?;
println!("Visibility: {:?}", sheet.get_visibility_type());
println!("Protected: {}", sheet.is_protected());
पंक्तियाँ, स्तंभ, और मर्ज्ड सेल्स
CellsMut get_rows()/get_columns() को RowsMut/ColumnsMut के रूप में उजागर करता है ताकि व्यक्तिगत पंक्तियों और स्तंभों का आकार बदल सके और उन्हें छिपा सके, और merge(first_row, first_column, total_rows, total_columns) का उपयोग करके कई सेल्स की रेंज को एक मर्ज्ड क्षेत्र में मिलाया जा सके।
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("Merged")?;
cells.get("C4")?.put_value_i32(99)?;
cells.get_rows().get(1).set_height(22.5)?;
cells.get_rows().get(3).set_is_hidden(true)?;
cells.get_columns().get(0).set_width(18.25)?;
cells.get_columns().get(2).set_is_hidden(true)?;
let mut cells = sheet.get_cells_mut();
cells.merge(0, 0, 2, 2)?;
}
workbook.save("rows-columns.xlsx")?;
let loaded = Workbook::load_xlsx("rows-columns.xlsx")?;
let sheet = loaded.worksheet("Sheet1")?;
println!(
"Row 2 height: {}",
sheet.get_rows().get(1).get_height().unwrap_or_default()
);
println!(
"Column A width: {}",
sheet.get_columns().get(0).get_width().unwrap_or_default()
);
println!("Merged regions: {}", sheet.get_cells().get_merged_cells().len());
निदान के साथ रक्षात्मक लोडिंग
वास्तविक दुनिया की XLSX फ़ाइलें हमेशा सही स्वरूपित नहीं होतीं। LoadOptions मरम्मत फ़्लैग्स (try_repair_package, try_repair_xml) को उजागर करता है, और Workbook::get_load_diagnostics() एक LoadDiagnostics ऑब्जेक्ट लौटाता है जिसके issues() में बताया जाता है कि लोडर ने क्या पाया और सुधारा।
let options = LoadOptions {
try_repair_package: true,
try_repair_xml: true,
..LoadOptions::default()
};
let loaded = Workbook::load_xlsx_with_options(&path, &options)?;
let sheet = loaded.worksheet("Sheet1")?;
let cells = sheet.get_cells();
println!(
"Loaded workbook with {} worksheet(s) and {} diagnostic issue(s).",
loaded.get_worksheets().count(),
loaded.get_load_diagnostics().issues().len()
);
println!("First item: {}", cells.get("A2")?.display_string_value());
त्वरित शुरूआत
# 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>> {
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Report")?;
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Item")?;
cells.get("B1")?.put_value_string("Quantity")?;
cells.get("A2")?.put_value_string("Widgets")?;
cells.get("B2")?.put_value_i32(12)?;
cells.get("B3")?
.put_formula_with_cached_value("=SUM(B2:B2)", CellValue::Number(12.0))?;
}
workbook.get_document_properties_mut().set_title("Quick Start Report");
workbook.save("report.xlsx")?;
let loaded = Workbook::load_xlsx("report.xlsx")?;
let sheet = loaded.worksheet("Report")?;
let cells = sheet.get_cells();
println!("Title: {}", loaded.get_document_properties().get_title());
println!("Total formula -> {}", cells.get("B3")?.display_string_value());
Ok(())
}
समर्थित स्वरूप
| फ़ॉर्मेट | एक्सटेंशन | पढ़ें | लिखें |
|---|---|---|---|
| XLSX | .xlsx | ✓ | ✓ |
XLSX वर्तमान रिलीज़ का मुख्य फोकस है: Workbook::load_xlsx और Workbook::save के माध्यम से पूर्ण राउंड-ट्रिप पढ़ना और लिखना, साथ ही LoadFormat और SaveFormat एनम्स स्पष्ट स्वरूप चयन को नियंत्रित करते हैं।
ओपन सोर्स एवं लाइसेंसिंग
Aspose.Cells FOSS for Rust MIT लाइसेंस के तहत है। पूर्ण स्रोत कोड GitHub पर उपलब्ध है, और लाइसेंस व्यावसायिक उपयोग, संशोधन और पुनर्वितरण की अनुमति देता है।