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
] a simple Excel serializer that implements the Polars
[SerWriter
] trait to write a dataframe to an Excel Xlsx file.
[PolarsXlsxWriter
] a more configurable Excel serializer that more closely
resembles the interface options provided by the Polars [write_excel()
]
dataframe method.
ExcelWriter
uses PolarsXlsxWriter
to do the Excel serialization which in
turn uses the [rust_xlsxwriter
] crate.
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 xlsx_writer = PolarsXlsxWriter::new();
xlsx_writer.write_dataframe(df)?;
xlsx_writer.save("dataframe2.xlsx")?;
Ok(())
} ```
Second output file (same as the first):