ajout du numéro de ligne séquentiel ou tel quel

pull/3/head
Nicolas Sanchez 2 months ago
parent b5391de168
commit 35a5895d01

@ -1 +1 @@
,sanchezn,pc-sanchezn,07.10.2025 21:40,file:///home/sanchezn/.config/libreoffice/4; ,sanchezn,pc-sanchezn,07.10.2025 21:58,file:///home/sanchezn/.config/libreoffice/4;

@ -38,6 +38,23 @@ impl ToString for TrimSpaces {
} }
} }
#[derive(Clone, Debug, ValueEnum)]
pub enum NumberRows {
AsIs,
Sequential,
None,
}
impl ToString for NumberRows {
fn to_string(&self) -> String {
match self {
NumberRows::AsIs => "as-is".into(),
NumberRows::Sequential => "sequential".into(),
NumberRows::None => "none".into(),
}
}
}
#[derive(Parser, Debug)] #[derive(Parser, Debug)]
pub struct Arguments { pub struct Arguments {
@ -63,6 +80,6 @@ pub struct Arguments {
#[arg(short, long, default_value_t = TrimSpaces::None)] #[arg(short, long, default_value_t = TrimSpaces::None)]
pub trim: TrimSpaces, pub trim: TrimSpaces,
/// number the rows /// number the rows
#[arg(short, long, default_value_t = false)] #[arg(short, long, default_value_t = NumberRows::None)]
pub number_rows: bool, pub number_rows: NumberRows,
} }

@ -1,7 +1,7 @@
use std::path::Path; use std::path::Path;
use umya_spreadsheet::{Range, Worksheet, reader}; use umya_spreadsheet::{Range, Worksheet, reader};
use crate::arguments::{Arguments, TrimSpaces}; use crate::arguments::{Arguments, NumberRows, TrimSpaces};
use crate::error::Error; use crate::error::Error;
pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> { pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
@ -65,7 +65,9 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
// TODO get every hidden columns // TODO get every hidden columns
// for each row... // for each row...
let mut seq_row_num = 0;
for i in 1..=num_rows { for i in 1..=num_rows {
// Avoid hidden rows if asked for // Avoid hidden rows if asked for
if !args.include_hidden_rows { if !args.include_hidden_rows {
match sheet.get_row_dimension(&i) { match sheet.get_row_dimension(&i) {
@ -75,9 +77,8 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
} }
} }
None => { None => {
if args.number_rows { seq_row_num += 1;
print!("{}{}", i, args.separator); number_row(&args.number_rows, args.separator, seq_row_num, i);
}
println!("{}", empty_row); println!("{}", empty_row);
continue; continue;
} }
@ -85,9 +86,8 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
} }
// number the row // number the row
if args.number_rows { seq_row_num += 1;
print!("{}{}", i, args.separator); number_row(&args.number_rows, args.separator, seq_row_num, i);
}
// for each column in row... // for each column in row...
let mut first = true; let mut first = true;
@ -147,6 +147,14 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
Ok(()) Ok(())
} }
fn number_row(number_row: &NumberRows, separator: char, seqrownum: u32, i: u32) {
match number_row {
NumberRows::AsIs => print!("{}{}", i, separator),
NumberRows::Sequential => print!("{}{}", seqrownum, separator),
NumberRows::None => {},
}
}
struct MergedCells { struct MergedCells {
merged_cells: Vec<Range>, merged_cells: Vec<Range>,
fill_horizontal: bool, fill_horizontal: bool,

Binary file not shown.
Loading…
Cancel
Save