Skip to main content

TableRow

Struct TableRow 

Source
pub struct TableRow {
    pub height_emu: i64,
    pub cells: Vec<TableCell>,
}
Expand description

One row of a SlideTable (<a:tr h="..">, CT_TableRow).

Fields§

§height_emu: i64

h — row height, in EMUs.

§cells: Vec<TableCell>

Implementations§

Source§

impl TableRow

Source

pub fn new(height_emu: i64) -> TableRow

Creates an empty row (no cells) at the given height.

Examples found in repository?
examples/pptx_tables.rs (line 23)
16fn main() -> office_toolkit::Result<()> {
17    let path = output_path("pptx_tables.pptx");
18
19    let plain_table = SlideTable::new(2, "Plain table", 5_000_000, 1_500_000)
20        .with_offset(838_200, 838_200)
21        .with_column_widths(vec![2_500_000, 2_500_000])
22        .with_row(
23            TableRow::new(500_000)
24                .with_cell(cell("Name"))
25                .with_cell(cell("Score")),
26        )
27        .with_row(
28            TableRow::new(500_000)
29                .with_cell(cell("Alice"))
30                .with_cell(cell("92")),
31        )
32        .with_row(
33            TableRow::new(500_000)
34                .with_cell(cell("Bob"))
35                .with_cell(cell("87")),
36        );
37
38    let merged_table = SlideTable::new(2, "Merged cells", 5_000_000, 1_000_000)
39        .with_offset(838_200, 838_200)
40        .with_column_widths(vec![1_667_000, 1_667_000, 1_666_000])
41        .with_row(
42            TableRow::new(500_000)
43                .with_cell(cell("Spanning header").with_horizontal_span(3))
44                .with_cell(TableCell::horizontally_merged())
45                .with_cell(TableCell::horizontally_merged()),
46        )
47        .with_row(
48            TableRow::new(500_000)
49                .with_cell(cell("A"))
50                .with_cell(cell("B"))
51                .with_cell(cell("C")),
52        );
53
54    let styled_table = SlideTable::new(2, "Styled table", 5_000_000, 1_500_000)
55        .with_offset(838_200, 838_200)
56        .with_style_id("{66BB4812-77A1-49B3-BDF9-0CCEB564D7B5}")
57        .with_style_first_row(true)
58        .with_style_band_rows(true)
59        .with_column_widths(vec![2_500_000, 2_500_000])
60        .with_row(
61            TableRow::new(500_000)
62                .with_cell(cell("Header A"))
63                .with_cell(cell("Header B")),
64        )
65        .with_row(
66            TableRow::new(500_000)
67                .with_cell(cell("1"))
68                .with_cell(cell("2")),
69        )
70        .with_row(
71            TableRow::new(500_000)
72                .with_cell(cell("3"))
73                .with_cell(cell("4")),
74        );
75
76    let presentation = Presentation::new()
77        .with_table_style(
78            SlideTableStyle::new(
79                "{66BB4812-77A1-49B3-BDF9-0CCEB564D7B5}",
80                "Custom Table Style",
81            )
82            .with_first_row(
83                TableStylePart::new()
84                    .with_fill(Fill::Solid(Color::Rgb("2E74B5".to_string())))
85                    .with_bold(true)
86                    .with_text_color(Color::Rgb("FFFFFF".to_string())),
87            )
88            .with_band1_horizontal(
89                TableStylePart::new().with_fill(Fill::Solid(Color::Rgb("F2F2F2".to_string()))),
90            ),
91        )
92        .with_slide(Slide::new().with_shape(Shape::Table(plain_table)))
93        .with_slide(Slide::new().with_shape(Shape::Table(merged_table)))
94        .with_slide(Slide::new().with_shape(Shape::Table(styled_table)));
95
96    presentation.save_to_file(&path)?;
97    println!("Wrote {}", path.display());
98    Ok(())
99}
Source

pub fn with_cell(self, cell: TableCell) -> TableRow

Appends a cell.

Examples found in repository?
examples/pptx_tables.rs (line 24)
16fn main() -> office_toolkit::Result<()> {
17    let path = output_path("pptx_tables.pptx");
18
19    let plain_table = SlideTable::new(2, "Plain table", 5_000_000, 1_500_000)
20        .with_offset(838_200, 838_200)
21        .with_column_widths(vec![2_500_000, 2_500_000])
22        .with_row(
23            TableRow::new(500_000)
24                .with_cell(cell("Name"))
25                .with_cell(cell("Score")),
26        )
27        .with_row(
28            TableRow::new(500_000)
29                .with_cell(cell("Alice"))
30                .with_cell(cell("92")),
31        )
32        .with_row(
33            TableRow::new(500_000)
34                .with_cell(cell("Bob"))
35                .with_cell(cell("87")),
36        );
37
38    let merged_table = SlideTable::new(2, "Merged cells", 5_000_000, 1_000_000)
39        .with_offset(838_200, 838_200)
40        .with_column_widths(vec![1_667_000, 1_667_000, 1_666_000])
41        .with_row(
42            TableRow::new(500_000)
43                .with_cell(cell("Spanning header").with_horizontal_span(3))
44                .with_cell(TableCell::horizontally_merged())
45                .with_cell(TableCell::horizontally_merged()),
46        )
47        .with_row(
48            TableRow::new(500_000)
49                .with_cell(cell("A"))
50                .with_cell(cell("B"))
51                .with_cell(cell("C")),
52        );
53
54    let styled_table = SlideTable::new(2, "Styled table", 5_000_000, 1_500_000)
55        .with_offset(838_200, 838_200)
56        .with_style_id("{66BB4812-77A1-49B3-BDF9-0CCEB564D7B5}")
57        .with_style_first_row(true)
58        .with_style_band_rows(true)
59        .with_column_widths(vec![2_500_000, 2_500_000])
60        .with_row(
61            TableRow::new(500_000)
62                .with_cell(cell("Header A"))
63                .with_cell(cell("Header B")),
64        )
65        .with_row(
66            TableRow::new(500_000)
67                .with_cell(cell("1"))
68                .with_cell(cell("2")),
69        )
70        .with_row(
71            TableRow::new(500_000)
72                .with_cell(cell("3"))
73                .with_cell(cell("4")),
74        );
75
76    let presentation = Presentation::new()
77        .with_table_style(
78            SlideTableStyle::new(
79                "{66BB4812-77A1-49B3-BDF9-0CCEB564D7B5}",
80                "Custom Table Style",
81            )
82            .with_first_row(
83                TableStylePart::new()
84                    .with_fill(Fill::Solid(Color::Rgb("2E74B5".to_string())))
85                    .with_bold(true)
86                    .with_text_color(Color::Rgb("FFFFFF".to_string())),
87            )
88            .with_band1_horizontal(
89                TableStylePart::new().with_fill(Fill::Solid(Color::Rgb("F2F2F2".to_string()))),
90            ),
91        )
92        .with_slide(Slide::new().with_shape(Shape::Table(plain_table)))
93        .with_slide(Slide::new().with_shape(Shape::Table(merged_table)))
94        .with_slide(Slide::new().with_shape(Shape::Table(styled_table)));
95
96    presentation.save_to_file(&path)?;
97    println!("Wrote {}", path.display());
98    Ok(())
99}

Trait Implementations§

Source§

impl Clone for TableRow

Source§

fn clone(&self) -> TableRow

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TableRow

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for TableRow

Source§

fn default() -> TableRow

Returns the “default value” for a type. Read more
Source§

impl PartialEq for TableRow

Source§

fn eq(&self, other: &TableRow) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for TableRow

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.