1use ppt_rs::generator::{SlideContent, Table, TableRow, TableCell, create_pptx_with_content};
2
3fn main() -> Result<(), Box<dyn std::error::Error>> {
4 let slides = vec![
5 SlideContent::new("Table Examples")
7 .add_bullet("Demonstrating table rendering in PPTX"),
8
9 SlideContent::new("Employee Data")
11 .table(create_employee_table()),
12
13 SlideContent::new("Sales Summary")
15 .table(create_sales_table()),
16
17 SlideContent::new("Quarterly Results")
19 .table(create_quarterly_table()),
20 ];
21
22 let pptx_data = create_pptx_with_content("Table Demo", slides)?;
23 std::fs::write("table_demo.pptx", pptx_data)?;
24 println!("✓ Created table_demo.pptx with 4 slides containing tables");
25
26 Ok(())
27}
28
29fn create_employee_table() -> Table {
30 let header_cells = vec![
31 TableCell::new("Name").bold().background_color("4F81BD"),
32 TableCell::new("Department").bold().background_color("4F81BD"),
33 TableCell::new("Status").bold().background_color("4F81BD"),
34 ];
35 let header_row = TableRow::new(header_cells);
36
37 let rows = vec![
38 TableRow::new(vec![
39 TableCell::new("Alice Johnson"),
40 TableCell::new("Engineering"),
41 TableCell::new("Active"),
42 ]),
43 TableRow::new(vec![
44 TableCell::new("Bob Smith"),
45 TableCell::new("Sales"),
46 TableCell::new("Active"),
47 ]),
48 TableRow::new(vec![
49 TableCell::new("Carol Davis"),
50 TableCell::new("Marketing"),
51 TableCell::new("On Leave"),
52 ]),
53 TableRow::new(vec![
54 TableCell::new("David Wilson"),
55 TableCell::new("Engineering"),
56 TableCell::new("Active"),
57 ]),
58 TableRow::new(vec![
59 TableCell::new("Emma Brown"),
60 TableCell::new("HR"),
61 TableCell::new("Active"),
62 ]),
63 ];
64
65 Table::new(
66 vec![vec![header_row], rows].concat(),
67 vec![2000000, 2500000, 1500000],
68 500000,
69 1500000,
70 )
71}
72
73fn create_sales_table() -> Table {
74 let header_cells = vec![
75 TableCell::new("Product").bold().background_color("003366"),
76 TableCell::new("Revenue").bold().background_color("003366"),
77 TableCell::new("Growth").bold().background_color("003366"),
78 ];
79 let header_row = TableRow::new(header_cells);
80
81 let rows = vec![
82 TableRow::new(vec![
83 TableCell::new("Cloud Services"),
84 TableCell::new("$450K"),
85 TableCell::new("+28%"),
86 ]),
87 TableRow::new(vec![
88 TableCell::new("Enterprise Suite"),
89 TableCell::new("$320K"),
90 TableCell::new("+15%"),
91 ]),
92 TableRow::new(vec![
93 TableCell::new("Developer Tools"),
94 TableCell::new("$280K"),
95 TableCell::new("+42%"),
96 ]),
97 TableRow::new(vec![
98 TableCell::new("Mobile App"),
99 TableCell::new("$195K"),
100 TableCell::new("+35%"),
101 ]),
102 TableRow::new(vec![
103 TableCell::new("Support Services"),
104 TableCell::new("$155K"),
105 TableCell::new("+12%"),
106 ]),
107 ];
108
109 Table::new(
110 vec![vec![header_row], rows].concat(),
111 vec![2200000, 2000000, 1800000],
112 500000,
113 1500000,
114 )
115}
116
117fn create_quarterly_table() -> Table {
118 let header_cells = vec![
119 TableCell::new("Quarter").bold().background_color("1F497D"),
120 TableCell::new("Revenue").bold().background_color("1F497D"),
121 TableCell::new("Profit").bold().background_color("1F497D"),
122 ];
123 let header_row = TableRow::new(header_cells);
124
125 let q1_cells = vec![
126 TableCell::new("Q1 2025"),
127 TableCell::new("$450K"),
128 TableCell::new("$90K"),
129 ];
130 let q1 = TableRow::new(q1_cells);
131
132 let q2_cells = vec![
133 TableCell::new("Q2 2025"),
134 TableCell::new("$520K"),
135 TableCell::new("$110K"),
136 ];
137 let q2 = TableRow::new(q2_cells);
138
139 let q3_cells = vec![
140 TableCell::new("Q3 2025"),
141 TableCell::new("$580K"),
142 TableCell::new("$130K"),
143 ];
144 let q3 = TableRow::new(q3_cells);
145
146 Table::new(
147 vec![header_row, q1, q2, q3],
148 vec![2000000, 2000000, 2000000],
149 500000,
150 1500000,
151 )
152}