polarsexcelwriter

The polars_excel_writer crate is a library for serializing Polars dataframes to Excel Xlsx files.

It provides two interfaces for writing a dataframe to an Excel Xlsx file:

ExcelWriter uses PolarsXlsxWriter to do the Excel serialization which in turn uses the [rust_xlsxwriter] crate.

Example

An example of writing a Polar Rust dataframe to an Excel file using the ExcelWriter interface.

```rust use chrono::prelude::; use polars::prelude::;

fn main() { // Create a sample dataframe for the example. let mut df: DataFrame = df!( "String" => &["North", "South", "East", "West"], "Integer" => &[1, 2, 3, 4], "Float" => &[4.0, 5.0, 6.0, 7.0], "Time" => &[ NaiveTime::fromhmsmilliopt(2, 59, 3, 456).unwrap(), NaiveTime::fromhmsmilliopt(2, 59, 3, 456).unwrap(), NaiveTime::fromhmsmilliopt(2, 59, 3, 456).unwrap(), NaiveTime::fromhmsmilliopt(2, 59, 3, 456).unwrap(), ], "Date" => &[ NaiveDate::fromymdopt(2022, 1, 1).unwrap(), NaiveDate::fromymdopt(2022, 1, 2).unwrap(), NaiveDate::fromymdopt(2022, 1, 3).unwrap(), NaiveDate::fromymdopt(2022, 1, 4).unwrap(), ], "Datetime" => &[ NaiveDate::fromymdopt(2022, 1, 1).unwrap().andhmsopt(1, 0, 0).unwrap(), NaiveDate::fromymdopt(2022, 1, 2).unwrap().andhmsopt(2, 0, 0).unwrap(), NaiveDate::fromymdopt(2022, 1, 3).unwrap().andhmsopt(3, 0, 0).unwrap(), NaiveDate::fromymdopt(2022, 1, 4).unwrap().andhmsopt(4, 0, 0).unwrap(), ], ) .unwrap();

example1(&mut df).unwrap();
example2(&df).unwrap();

}

// The ExcelWriter interface. use polarsexcelwriter::ExcelWriter;

fn example1(df: &mut DataFrame) -> PolarsResult<()> { let mut file = std::fs::File::create("dataframe.xlsx").unwrap();

ExcelWriter::new(&mut file).finish(df)

}

// The PolarsXlsxWriter interface. For this simple case it is similar to the // ExcelWriter interface but it has additional options to support more complex // use cases. use polarsexcelwriter::PolarsXlsxWriter;

fn example2(df: &DataFrame) -> PolarsResult<()> { let mut writer = PolarsXlsxWriter::new();

writer.write_dataframe(df)?;
writer.write_excel("dataframe2.xlsx")?;

Ok(())

} ```

Second output file (same as the first):