use edit_xlsx::{Col, Format, Row, Workbook, WorkbookResult, Write};
fn main() -> WorkbookResult<()> {
let mut workbook = Workbook::new();
let worksheet1 = workbook.add_worksheet_by_name("Outlined Rows")?;
let bold = Format::default().set_bold();
worksheet1.set_row_level(2, 2)?;
worksheet1.set_row_level(3, 2)?;
worksheet1.set_row_level(4, 2)?;
worksheet1.set_row_level(5, 2)?;
worksheet1.set_row_level(6, 1)?;
worksheet1.set_row_level(7, 2)?;
worksheet1.set_row_level(8, 2)?;
worksheet1.set_row_level(9, 2)?;
worksheet1.set_row_level(10, 2)?;
worksheet1.set_row_level(11, 1)?;
worksheet1.set_column("A:A", 20.0)?;
worksheet1.write_with_format("A1", "Region", &bold)?;
worksheet1.write("A2", "North")?;
worksheet1.write("A3", "North")?;
worksheet1.write("A4", "North")?;
worksheet1.write("A5", "North")?;
worksheet1.write_with_format("A6", "North Total", &bold)?;
worksheet1.write_with_format("B1", "Sales", &bold)?;
worksheet1.write("B2", 1000)?;
worksheet1.write("B3", 1200)?;
worksheet1.write("B4", 900)?;
worksheet1.write("B5", 1200)?;
worksheet1.write_formula_with_format("B6", "=SUBTOTAL(9,B2:B5)", &bold)?;
worksheet1.write("A7", "South")?;
worksheet1.write("A8", "South")?;
worksheet1.write("A9", "South")?;
worksheet1.write("A10", "South")?;
worksheet1.write_with_format("A11", "South Total", &bold)?;
worksheet1.write("B7", 400)?;
worksheet1.write("B8", 600)?;
worksheet1.write("B9", 500)?;
worksheet1.write("B10", 600)?;
worksheet1.write_formula_with_format("B11", "=SUBTOTAL(9,B7:B10)", &bold)?;
worksheet1.write_with_format("A12", "Grand Total", &bold)?;
worksheet1.write_formula_with_format("B12", "=SUBTOTAL(9,B2:B10)", &bold)?;
let worksheet2 = workbook.add_worksheet_by_name("Collapsed Rows")?;
worksheet2.set_row_level(2, 2)?;
worksheet2.hide_row(2)?;
worksheet2.set_row_level(3, 2)?;
worksheet2.hide_row(3)?;
worksheet2.set_row_level(4, 2)?;
worksheet2.hide_row(4)?;
worksheet2.set_row_level(5, 2)?;
worksheet2.hide_row(5)?;
worksheet2.set_row_level(6, 1)?;
worksheet2.hide_row(6)?;
worksheet2.set_row_level(7, 2)?;
worksheet2.hide_row(7)?;
worksheet2.set_row_level(8, 2)?;
worksheet2.hide_row(8)?;
worksheet2.set_row_level(9, 2)?;
worksheet2.hide_row(9)?;
worksheet2.set_row_level(10, 2)?;
worksheet2.hide_row(10)?;
worksheet2.set_row_level(11, 1)?;
worksheet2.hide_row(11)?;
worksheet2.collapse_row(12)?;
worksheet2.set_column("A:A", 20.0)?;
worksheet2.write_with_format("A1", "Region", &bold)?;
worksheet2.write("A2", "North")?;
worksheet2.write("A3", "North")?;
worksheet2.write("A4", "North")?;
worksheet2.write("A5", "North")?;
worksheet2.write_with_format("A6", "North Total", &bold)?;
worksheet2.write_with_format("B1", "Sales", &bold)?;
worksheet2.write("B2", 1000)?;
worksheet2.write("B3", 1200)?;
worksheet2.write("B4", 900)?;
worksheet2.write("B5", 1200)?;
worksheet2.write_formula_with_format("B6", "=SUBTOTAL(9,B2:B5)", &bold)?;
worksheet2.write("A7", "South")?;
worksheet2.write("A8", "South")?;
worksheet2.write("A9", "South")?;
worksheet2.write("A10", "South")?;
worksheet2.write_with_format("A11", "South Total", &bold)?;
worksheet2.write("B7", 400)?;
worksheet2.write("B8", 600)?;
worksheet2.write("B9", 500)?;
worksheet2.write("B10", 600)?;
worksheet2.write_formula_with_format("B11", "=SUBTOTAL(9,B7:B10)", &bold)?;
worksheet2.write_with_format("A12", "Grand Total", &bold)?;
worksheet2.write_formula_with_format("B12", "=SUBTOTAL(9,B2:B10)", &bold)?;
let worksheet3 = workbook.add_worksheet_by_name("Outline Columns")?;
worksheet3.set_row_with_format(1, 15.0, &bold)?;
worksheet3.write_row("A1", ["Month", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Total"].iter())?;
worksheet3.set_column_with_format("A:A", 10.0, &bold)?;
worksheet3.set_column("B:G", 10.0)?;
worksheet3.set_column_level("B:G", 1)?;
worksheet3.set_column("H:H", 10.0)?;
worksheet3.write_column("A2", ["North", "South", "East", "East"].iter())?;
worksheet3.write_row("B2", [50, 20, 15, 25, 65, 80].iter())?;
worksheet3.write_row("B3", [10, 20, 30, 50, 50, 50].iter())?;
worksheet3.write_row("B4", [45, 75, 50, 15, 75, 100].iter())?;
worksheet3.write_row("B5", [15, 15, 55, 35, 20, 50].iter())?;
worksheet3.write_formula("H2", "=SUM(B2:G2)")?;
worksheet3.write_formula("H3", "=SUM(B3:G3)")?;
worksheet3.write_formula("H4", "=SUM(B4:G4)")?;
worksheet3.write_formula("H5", "=SUM(B5:G5)")?;
worksheet3.write_formula_with_format("H6", "=SUM(H2:H5)", &bold)?;
let levels = [
"Level 1",
"Level 2",
"Level 3",
"Level 4",
"Level 5",
"Level 6",
"Level 7",
"Level 6",
"Level 5",
"Level 4",
"Level 3",
"Level 2",
"Level 1",
];
let worksheet4 = workbook.add_worksheet_by_name("Outline levels")?;
worksheet4.write_column("A1", levels.iter())?;
worksheet4.set_row_level(1, 1)?;
worksheet4.set_row_level(2, 2)?;
worksheet4.set_row_level(3, 3)?;
worksheet4.set_row_level(4, 4)?;
worksheet4.set_row_level(5, 5)?;
worksheet4.set_row_level(6, 6)?;
worksheet4.set_row_level(7, 7)?;
worksheet4.set_row_level(8, 6)?;
worksheet4.set_row_level(9, 5)?;
worksheet4.set_row_level(10, 4)?;
worksheet4.set_row_level(11, 3)?;
worksheet4.set_row_level(12, 2)?;
worksheet4.set_row_level(13, 1)?;
workbook.save_as("examples/outline.xlsx")?;
Ok(())
}