xl-cli-tools

CLI tools for viewing and editing Excel files
Log | Files | Refs | README | LICENSE

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 }