pull/3/head
Nicolas Sanchez 1 month ago
parent 7170f28214
commit e5f21b43e1

@ -1,3 +1,4 @@
use std::io::{BufWriter, Write, stdout};
use std::path::Path; use std::path::Path;
use umya_spreadsheet::{Cell, Range, Worksheet, reader}; use umya_spreadsheet::{Cell, Range, Worksheet, reader};
@ -8,8 +9,6 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
let book = reader::xlsx::read(Path::new(&args.file)) let book = reader::xlsx::read(Path::new(&args.file))
.expect(format!("Can't open {}", args.file).as_str()); .expect(format!("Can't open {}", args.file).as_str());
let mut buffer = BufferWriter::new();
if args.list_worksheets { if args.list_worksheets {
println!("Liste of worksheets :"); println!("Liste of worksheets :");
let mut i = 0; let mut i = 0;
@ -103,6 +102,9 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
return Err(Error::new("Number of rows < number of rows to skip")); return Err(Error::new("Number of rows < number of rows to skip"));
} }
let stdout = stdout();
let mut writer = BufWriter::new(stdout.lock());
// for each row... // for each row...
let mut seq_row_num = 0; let mut seq_row_num = 0;
for i in (args.skip_rows+1)..=num_rows { for i in (args.skip_rows+1)..=num_rows {
@ -116,16 +118,18 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
} }
None => { None => {
seq_row_num += 1; seq_row_num += 1;
number_row(&args.number_rows, args.separator, seq_row_num, i); writer.write(number_row(&args.number_rows, args.separator, seq_row_num, i).as_bytes()).unwrap();
print!("{}", empty_row); writer.write(empty_row.as_bytes()).unwrap();
continue; continue;
} }
} }
} }
let mut line = String::from("");
// number the row // number the row
seq_row_num += 1; seq_row_num += 1;
number_row(&args.number_rows, args.separator, seq_row_num, i); line += number_row(&args.number_rows, args.separator, seq_row_num, i).as_str();
// for each column in row... // for each column in row...
let mut first = true; let mut first = true;
@ -137,7 +141,7 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
if first { if first {
first = false; first = false;
} else { } else {
print!("{}", args.separator); line.push(args.separator);
} }
let cell = match sheet.get_cell((j, i)) { let cell = match sheet.get_cell((j, i)) {
@ -194,19 +198,20 @@ pub fn xlsxtocsv(args: &Arguments) -> Result<(), Error> {
)); ));
} }
} }
print!("{}", value); line += value.as_str();
} }
print!("{}", args.end_of_line); line += args.end_of_line.as_str();
writer.write(line.as_bytes()).unwrap();
} }
Ok(()) Ok(())
} }
fn number_row(number_row: &NumberRows, separator: char, seqrownum: u32, i: u32) { fn number_row(number_row: &NumberRows, separator: char, seqrownum: u32, i: u32) -> String {
match number_row { match number_row {
NumberRows::AsIs => print!("{}{}", i, separator), NumberRows::AsIs => format!("{}{}", i, separator),
NumberRows::Sequential => print!("{}{}", seqrownum, separator), NumberRows::Sequential => format!("{}{}", seqrownum, separator),
NumberRows::None => {} NumberRows::None => String::from(""),
} }
} }

Loading…
Cancel
Save