pub struct NamedCellStyle {
pub name: String,
pub format: CellFormat,
pub builtin_id: Option<u32>,
}Expand description
A named cell style (<cellStyle>/its paired <cellStyleXfs> <xf> entry,
CT_CellStyle/CT_Xf), declared workbook-wide in xl/styles.xml and referenced from any
CellFormat via CellFormat::named_style. This is Excel’s “Cell Styles” gallery: built-in
entries like Good/Bad/ Neutral/Heading 1-4/Input/Output/Calculation/Currency/
Percent/Comma, or a caller’s own custom-named style. Confirmed against sml.xsd:
CT_CellStyle’s only required attribute is xfId (this crate assigns it automatically, from
this entry’s position in Workbook::named_cell_styles, mirroring how a dxfId/table-style
dxfId is resolved rather than caller-supplied); name/builtinId are both optional but a
real style always sets name at least (an unnamed entry would show as blank in Excel’s gallery,
so name is required here, not Option).
Fields§
§name: StringThis style’s name, shown in Excel’s Cell Styles gallery and referenced by
CellFormat::named_style (must be unique within the workbook, not validated here).
format: CellFormatThe formatting this style applies (font/fill/border/number format/ alignment — the same
CellFormat shape a regular cell format uses, written into its own dedicated
cellStyleXfs entry rather than the shared cellXfs collection, mirroring how a dxf’s
CellFormat is a separate index space too, see writer.rs::collect_dxfs’s doc comment).
builtin_id: Option<u32>Identifies this as one of Excel’s own built-in styles rather than a caller-defined one
(builtinId, e.g. 0 = "Normal", 3 = "Good", 4 = "Bad", 5 = "Neutral",
7-10 = "Heading 1"-"Heading 4". — ST_CellStyleBuiltinId’s full ~54-value table is
not reproduced/validated here, this crate simply writes whatever u32 the caller supplies
verbatim). None for a purely custom style with no built-in equivalent.
Implementations§
Source§impl NamedCellStyle
impl NamedCellStyle
Sourcepub fn new(name: impl Into<String>, format: CellFormat) -> NamedCellStyle
pub fn new(name: impl Into<String>, format: CellFormat) -> NamedCellStyle
Creates a named cell style with the given name and format, no built-in id (a purely custom style).
Examples found in repository?
15fn main() -> office_toolkit::Result<()> {
16 let path = output_path("xlsx_cell_formatting.xlsx");
17
18 let borders_sheet =
19 Sheet::new("Borders").with_row(
20 Row::new()
21 .with_cell(Cell::text("Thin all around").with_format(
22 CellFormat::new().with_border(Border::all(BorderStyle::Thin, "FF000000")),
23 ))
24 .with_cell(Cell::text("Thick bottom only").with_format(
25 CellFormat::new().with_border(
26 Border::new().with_bottom(
27 BorderEdge::new(BorderStyle::Thick).with_color("FFC00000"),
28 ),
29 ),
30 )),
31 );
32
33 let fills_sheet = Sheet::new("Fills")
34 .with_row(Row::new().with_cell(
35 Cell::text("Solid fill").with_format(CellFormat::new().with_fill_color("FFFFF2CC")),
36 ))
37 .with_row(
38 Row::new().with_cell(
39 Cell::text("Pattern fill").with_format(
40 CellFormat::new().with_pattern_fill(
41 PatternFill::new(PatternType::LightGray)
42 .with_fg_color("FF4472C4")
43 .with_bg_color("FFFFFFFF"),
44 ),
45 ),
46 ),
47 )
48 .with_row(
49 Row::new().with_cell(Cell::text("Gradient fill").with_format(
50 CellFormat::new().with_gradient_fill(GradientFill::new(
51 90.0,
52 vec![
53 GradientStop::new(0.0, "FFFFFFFF"),
54 GradientStop::new(1.0, "FF4472C4"),
55 ],
56 )),
57 )),
58 );
59
60 let fonts_and_alignment_sheet =
61 Sheet::new("Fonts and alignment")
62 .with_row(
63 Row::new().with_cell(
64 Cell::text("Bold, red, 14pt").with_format(
65 CellFormat::new()
66 .with_bold(true)
67 .with_font_size(14.0)
68 .with_font_color("FFC00000"),
69 ),
70 ),
71 )
72 .with_row(
73 Row::new().with_cell(
74 Cell::text("Centered both ways").with_format(
75 CellFormat::new()
76 .with_horizontal_alignment(HorizontalAlignment::Center)
77 .with_vertical_alignment(VerticalAlignment::Center),
78 ),
79 ),
80 )
81 .with_row(Row::new().with_cell(
82 Cell::text("Indented text").with_format(CellFormat::new().with_indent(2)),
83 ));
84
85 let number_formats_sheet = Sheet::new("Number formats")
86 .with_row(Row::new().with_cell(
87 Cell::number(1234.5).with_format(CellFormat::new().with_number_format("#,##0.00")),
88 ))
89 .with_row(Row::new().with_cell(
90 Cell::number(0.0825).with_format(CellFormat::new().with_number_format("0.00%")),
91 ))
92 .with_row(Row::new().with_cell(
93 Cell::number(1234.5).with_format(CellFormat::new().with_number_format("$#,##0.00")),
94 ));
95
96 let named_styles_sheet = Sheet::new("Named styles").with_row(
97 Row::new().with_cell(
98 Cell::text("Uses a named style")
99 .with_format(CellFormat::new().with_named_style("Emphasis")),
100 ),
101 );
102
103 let workbook = Workbook::new()
104 .with_named_cell_style(NamedCellStyle::new(
105 "Emphasis",
106 CellFormat::new()
107 .with_bold(true)
108 .with_font_color("FF4472C4"),
109 ))
110 .with_sheet(borders_sheet)
111 .with_sheet(fills_sheet)
112 .with_sheet(fonts_and_alignment_sheet)
113 .with_sheet(number_formats_sheet)
114 .with_sheet(named_styles_sheet);
115
116 workbook.save_to_file(&path)?;
117 println!("Wrote {}", path.display());
118 Ok(())
119}Sourcepub fn with_builtin_id(self, builtin_id: u32) -> NamedCellStyle
pub fn with_builtin_id(self, builtin_id: u32) -> NamedCellStyle
Sets the built-in id and returns the style for chaining.
Trait Implementations§
Source§impl Clone for NamedCellStyle
impl Clone for NamedCellStyle
Source§fn clone(&self) -> NamedCellStyle
fn clone(&self) -> NamedCellStyle
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more