1use crate::{
2 args::Flatten,
3 utils::{cli_result::CliResult, reader::ExcelReader, table::Table},
4};
5
6impl Flatten {
7 pub fn excel_run(&self) -> CliResult {
8 let path = &self.path();
9
10 let mut range = ExcelReader::new(path, self.sheet)?;
12
13 let columns: Vec<String> = if self.no_header {
15 (1..=range.column_n())
16 .map(|i| format!("col{i}"))
17 .collect::<Vec<_>>()
18 } else {
19 let Some(r) = range.next() else { return Ok(()) };
20 r.iter().map(|i| i.to_string()).collect::<Vec<_>>()
21 };
22
23 let n = self.n as usize; range
26 .iter()
27 .skip(range.next_called)
28 .take(n)
29 .enumerate()
30 .for_each(|(i, l)| {
31 println!(" {}row{}", &self.delimiter, i + 1);
32 let r = l
33 .iter()
34 .zip(&columns)
35 .map(|(v, k)| [k.to_owned(), v.to_string()])
36 .collect::<Vec<_>>();
37 Table::from_records(r).print_blank().unwrap();
38 });
39
40 Ok(())
41 }
42}