bufferwriter #3

Merged
sanchezn merged 3 commits from bufferwriter into main 1 month ago

@ -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};
@ -101,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 {
@ -114,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;
@ -135,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)) {
@ -192,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(""),
} }
} }

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save