pub struct DefinedName {
pub name: String,
pub refers_to: String,
pub local_sheet_id: Option<usize>,
pub hidden: bool,
pub comment: Option<String>,
}Expand description
A named range/formula/constant (<definedName>, CT_DefinedName) — unlike
ConditionalFormattingRule/DataValidationRule, this is a workbook-level construct, not
attached to any particular Sheet, even when local_sheet_id
scopes it to one.
Only name/refers_to/local_sheet_id/hidden/comment are modeled. CT_DefinedName’s
remaining attributes (function/
vbProcedure/xlm/functionGroupId/shortcutKey/publishToServer/
workbookParameter/customMenu/description/help/statusBar) are all macro/add-in/UI-text
concerns with no real demand seen yet, same scope-reduction posture as elsewhere in this crate.
SpreadsheetML’s reserved _xlnm.* built-in names (print area, print titles, filter database..)
aren’t given any special handling — a caller can write one like any other name, but nothing here
validates or treats it specially.
Fields§
§name: StringThe name shown in Excel’s Name Manager (name, required).
refers_to: StringThe formula, range reference, or constant this name refers to (e.g. "Feuil1!$A$1:$B$10"),
written as the element’s own text content — unlike a conditional formatting/data validation
rule’s formula, CT_DefinedName has simple content (ST_Formula), not a dedicated child
element.
local_sheet_id: Option<usize>If Some, scopes this name to a single sheet rather than the whole workbook
(localSheetId, a 0-based index into Workbook.sheets in declaration
order) — a sheet-scoped name can be duplicated across different sheets’ scopes, unlike a
workbook-scoped one. None means workbook-wide scope, the common case.
Whether this name is hidden in Excel’s Name Manager UI (hidden).
comment: Option<String>An optional comment shown for this name (comment).
Implementations§
Source§impl DefinedName
impl DefinedName
Sourcepub fn new(name: impl Into<String>, refers_to: impl Into<String>) -> DefinedName
pub fn new(name: impl Into<String>, refers_to: impl Into<String>) -> DefinedName
Creates a workbook-scoped defined name, not hidden, no comment.
Examples found in repository?
16fn main() -> office_toolkit::Result<()> {
17 let path = output_path("xlsx_workbook_metadata.xlsx");
18
19 let named_ranges_sheet = Sheet::new("Named ranges")
20 .with_row(Row::new().with_text("Tax rate").with_number(0.0825))
21 .with_row(Row::new().with_cell(Cell::formula("TaxRate*100").with_cached_value(8.25)));
22
23 let calculation_sheet = Sheet::new("Calculation").with_row(
24 Row::new().with_text("Set to manual recalculation with iterative calculation enabled."),
25 );
26
27 let scenarios_sheet = Sheet::new("Scenarios")
28 .with_row(Row::new().with_text("Revenue").with_number(100_000.0))
29 .with_row(Row::new().with_text("Cost").with_number(60_000.0))
30 .with_scenario(
31 Scenario::new("Best case")
32 .with_input("B1", "150000")
33 .with_input("B2", "55000")
34 .with_comment("Optimistic projection"),
35 )
36 .with_scenario(
37 Scenario::new("Worst case")
38 .with_input("B1", "70000")
39 .with_input("B2", "65000"),
40 );
41
42 let auto_filter_sheet = Sheet::new("Autofilter criteria")
43 .with_row(Row::new().with_text("Region"))
44 .with_row(Row::new().with_text("North"))
45 .with_row(Row::new().with_text("South"))
46 .with_auto_filter_range("A1:A3")
47 .with_auto_filter_column(AutoFilterColumn::new(0, vec!["North".to_string()]));
48
49 let ignored_errors_sheet = Sheet::new("Ignored errors")
50 .with_row(Row::new().with_text("123")) // a number stored as text — normally flagged by Excel
51 .with_ignored_error(IgnoredError::new("A1:A1").with_number_stored_as_text(true));
52
53 let workbook = Workbook::new()
54 .with_defined_name(DefinedName::new("TaxRate", "'Named ranges'!$B$1"))
55 .with_calculation(
56 CalculationProperties::new()
57 .with_mode(CalculationMode::Manual)
58 .with_iterate(true),
59 )
60 .with_sheet(named_ranges_sheet)
61 .with_sheet(calculation_sheet)
62 .with_sheet(scenarios_sheet)
63 .with_sheet(auto_filter_sheet)
64 .with_sheet(ignored_errors_sheet);
65
66 // `Workbook.properties` has no `with_*` builder — it's set directly,
67 // like any other public field.
68 let properties = DocumentProperties::new()
69 .with_title("Metadata example")
70 .with_author("Example Author")
71 .with_subject("Workbook-level features")
72 .with_custom_property(
73 "ProjectCode",
74 CustomPropertyValue::Text("XLSX-META".to_string()),
75 );
76 let workbook = Workbook {
77 properties,
78 ..workbook
79 };
80
81 workbook.save_to_file(&path)?;
82 println!("Wrote {}", path.display());
83 Ok(())
84}Sourcepub fn with_local_sheet_id(self, local_sheet_id: usize) -> DefinedName
pub fn with_local_sheet_id(self, local_sheet_id: usize) -> DefinedName
Scopes this name to a single sheet (by its 0-based position in
Workbook.sheets) and returns it for chaining.
Sets whether this name is hidden in Excel’s Name Manager and returns it for chaining.
Sourcepub fn with_comment(self, comment: impl Into<String>) -> DefinedName
pub fn with_comment(self, comment: impl Into<String>) -> DefinedName
Sets this name’s comment and returns it for chaining.
Trait Implementations§
Source§impl Clone for DefinedName
impl Clone for DefinedName
Source§fn clone(&self) -> DefinedName
fn clone(&self) -> DefinedName
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more