Skip to content

Instantly share code, notes, and snippets.

@lethean
Last active January 14, 2021 04:02
Show Gist options
  • Save lethean/fd23eb2b30fc287cee24cafd36b7db09 to your computer and use it in GitHub Desktop.
Save lethean/fd23eb2b30fc287cee24cafd36b7db09 to your computer and use it in GitHub Desktop.
Convert CSV to Excel using Rust
[package]
name = "csv2xlsx"
version = "0.1.0"
authors = ["Sunjin Yang"]
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
csv = "1.1.5"
simple_excel_writer = "0.1.7"
pub fn convert_csv_to_excel(
csv_path: &str,
excel_path: &str,
) -> Result<(), Box<dyn std::error::Error>> {
let mut rdr = csv::ReaderBuilder::new()
.has_headers(false)
.flexible(true)
.from_path(csv_path)?;
let mut wb = simple_excel_writer::Workbook::create(excel_path);
let mut sheet = wb.create_sheet("Events");
wb.write_sheet(&mut sheet, |sw| {
for result in rdr.records() {
if let Ok(record) = result {
let mut row = simple_excel_writer::Row::new();
for field in record.iter() {
row.add_cell(field);
}
sw.append_row(row)?;
}
}
Ok(())
})?;
wb.close()?;
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = std::env::args().collect();
convert_csv_to_excel(&args[1], &args[2])
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment