rsv_lib/excel/
tail.rs

1use crate::args::Tail;
2use crate::utils::cli_result::CliResult;
3use crate::utils::constants::COMMA;
4use crate::utils::filename::new_path;
5use crate::utils::reader::ExcelReader;
6use crate::utils::writer::Writer;
7
8impl Tail {
9    pub fn excel_run(&self) -> CliResult {
10        let path = &self.path();
11        let out = new_path(path, "-tail").with_extension("csv");
12        let mut wtr = Writer::file_or_stdout(self.export, &out)?;
13        let mut range = ExcelReader::new(path, self.sheet)?;
14
15        // header
16        if !self.no_header {
17            let Some(r) = range.next() else {
18                return Ok(());
19            };
20            wtr.write_excel_line_unchecked(r, COMMA);
21        }
22
23        // show head n
24        range
25            .iter()
26            .skip(range.next_called)
27            .rev()
28            .take(self.n)
29            .rev()
30            .for_each(|r| wtr.write_excel_line_unchecked(r, COMMA));
31
32        if self.export {
33            println!("Saved to file: {}", out.display())
34        }
35
36        Ok(())
37    }
38}