create_demo.rs (5800B)
1 use rust_xlsxwriter::*; 2 use std::path::Path; 3 4 fn main() { 5 let dir = Path::new("demo"); 6 7 // --- sales.xlsx: single sheet, 12 rows --- 8 { 9 let mut wb = Workbook::new(); 10 let ws = wb.add_worksheet(); 11 ws.set_name("Q1 Sales").unwrap(); 12 13 ws.write_string(0, 0, "Date").unwrap(); 14 ws.write_string(0, 1, "Region").unwrap(); 15 ws.write_string(0, 2, "Product").unwrap(); 16 ws.write_string(0, 3, "Revenue").unwrap(); 17 ws.write_string(0, 4, "Units").unwrap(); 18 19 let data = [ 20 ("2024-01-05", "East", "Widget A", 12500.0, 250.0), 21 ("2024-01-12", "West", "Widget B", 8700.0, 145.0), 22 ("2024-01-19", "East", "Widget A", 15300.0, 306.0), 23 ("2024-01-26", "North", "Widget C", 4200.0, 84.0), 24 ("2024-02-02", "West", "Widget A", 11800.0, 236.0), 25 ("2024-02-09", "East", "Widget B", 9100.0, 152.0), 26 ("2024-02-16", "South", "Widget C", 6700.0, 134.0), 27 ("2024-02-23", "North", "Widget A", 13400.0, 268.0), 28 ("2024-03-01", "West", "Widget B", 7900.0, 132.0), 29 ("2024-03-08", "East", "Widget C", 5500.0, 110.0), 30 ("2024-03-15", "South", "Widget A", 14200.0, 284.0), 31 ("2024-03-22", "North", "Widget B", 10600.0, 177.0), 32 ]; 33 34 for (i, (date, region, product, revenue, units)) in data.iter().enumerate() { 35 let row = (i + 1) as u32; 36 ws.write_string(row, 0, *date).unwrap(); 37 ws.write_string(row, 1, *region).unwrap(); 38 ws.write_string(row, 2, *product).unwrap(); 39 ws.write_number(row, 3, *revenue).unwrap(); 40 ws.write_number(row, 4, *units).unwrap(); 41 } 42 43 wb.save(dir.join("sales.xlsx")).unwrap(); 44 println!("Created demo/sales.xlsx"); 45 } 46 47 // --- budget.xlsx: 3 sheets --- 48 { 49 let mut wb = Workbook::new(); 50 51 let ws1 = wb.add_worksheet(); 52 ws1.set_name("Revenue").unwrap(); 53 ws1.write_string(0, 0, "Quarter").unwrap(); 54 ws1.write_string(0, 1, "Amount").unwrap(); 55 ws1.write_string(0, 2, "Target").unwrap(); 56 for (i, (q, amt, tgt)) in [ 57 ("Q1", 145000.0, 140000.0), 58 ("Q2", 162000.0, 155000.0), 59 ("Q3", 138000.0, 150000.0), 60 ("Q4", 171000.0, 165000.0), 61 ].iter().enumerate() { 62 let row = (i + 1) as u32; 63 ws1.write_string(row, 0, *q).unwrap(); 64 ws1.write_number(row, 1, *amt).unwrap(); 65 ws1.write_number(row, 2, *tgt).unwrap(); 66 } 67 68 let ws2 = wb.add_worksheet(); 69 ws2.set_name("Expenses").unwrap(); 70 ws2.write_string(0, 0, "Category").unwrap(); 71 ws2.write_string(0, 1, "Q1").unwrap(); 72 ws2.write_string(0, 2, "Q2").unwrap(); 73 for (i, (cat, q1, q2)) in [ 74 ("Payroll", 85000.0, 87000.0), 75 ("Marketing", 12000.0, 15000.0), 76 ("Infra", 8000.0, 9500.0), 77 ].iter().enumerate() { 78 let row = (i + 1) as u32; 79 ws2.write_string(row, 0, *cat).unwrap(); 80 ws2.write_number(row, 1, *q1).unwrap(); 81 ws2.write_number(row, 2, *q2).unwrap(); 82 } 83 84 let ws3 = wb.add_worksheet(); 85 ws3.set_name("Summary").unwrap(); 86 ws3.write_string(0, 0, "Metric").unwrap(); 87 ws3.write_string(0, 1, "Value").unwrap(); 88 ws3.write_string(1, 0, "Total Revenue").unwrap(); 89 ws3.write_number(1, 1, 616000.0).unwrap(); 90 ws3.write_string(2, 0, "Total Expenses").unwrap(); 91 ws3.write_number(2, 1, 216500.0).unwrap(); 92 ws3.write_string(3, 0, "Net").unwrap(); 93 ws3.write_number(3, 1, 399500.0).unwrap(); 94 95 wb.save(dir.join("budget.xlsx")).unwrap(); 96 println!("Created demo/budget.xlsx"); 97 } 98 99 // --- old.xlsx & new.xlsx: diff demo pair --- 100 { 101 let mut wb = Workbook::new(); 102 let ws = wb.add_worksheet(); 103 ws.set_name("Sheet1").unwrap(); 104 ws.write_string(0, 0, "ID").unwrap(); 105 ws.write_string(0, 1, "Name").unwrap(); 106 ws.write_string(0, 2, "Department").unwrap(); 107 ws.write_string(0, 3, "Salary").unwrap(); 108 for (i, (id, name, dept, salary)) in [ 109 (1, "Alice", "Engineering", 95000.0), 110 (2, "Bob", "Marketing", 72000.0), 111 (3, "Charlie", "Engineering", 88000.0), 112 (4, "Dana", "Sales", 65000.0), 113 ].iter().enumerate() { 114 let row = (i + 1) as u32; 115 ws.write_number(row, 0, *id as f64).unwrap(); 116 ws.write_string(row, 1, *name).unwrap(); 117 ws.write_string(row, 2, *dept).unwrap(); 118 ws.write_number(row, 3, *salary).unwrap(); 119 } 120 wb.save(dir.join("old.xlsx")).unwrap(); 121 println!("Created demo/old.xlsx"); 122 123 let mut wb = Workbook::new(); 124 let ws = wb.add_worksheet(); 125 ws.set_name("Sheet1").unwrap(); 126 ws.write_string(0, 0, "ID").unwrap(); 127 ws.write_string(0, 1, "Name").unwrap(); 128 ws.write_string(0, 2, "Department").unwrap(); 129 ws.write_string(0, 3, "Salary").unwrap(); 130 for (i, (id, name, dept, salary)) in [ 131 (1, "Alice", "Engineering", 98000.0), 132 (2, "Bob", "Design", 75000.0), 133 (4, "Dana", "Sales", 65000.0), 134 (5, "Eve", "Marketing", 70000.0), 135 ].iter().enumerate() { 136 let row = (i + 1) as u32; 137 ws.write_number(row, 0, *id as f64).unwrap(); 138 ws.write_string(row, 1, *name).unwrap(); 139 ws.write_string(row, 2, *dept).unwrap(); 140 ws.write_number(row, 3, *salary).unwrap(); 141 } 142 wb.save(dir.join("new.xlsx")).unwrap(); 143 println!("Created demo/new.xlsx"); 144 } 145 }