9 breaking releases
new 0.10.0 | Jan 5, 2025 |
---|---|
0.9.0 | Sep 17, 2024 |
0.8.0 | Aug 24, 2024 |
0.7.0 | Feb 25, 2024 |
0.4.0 | Nov 22, 2023 |
#562 in Encoding
1,678 downloads per month
98KB
400 lines
polars_excel_writer
The polars_excel_writer
crate is a library for serializing Polars dataframes
to Excel Xlsx files.
It provides a primary interface PolarsXlsxWriter
which is a configurable
Excel serializer that resembles the interface options provided by the Polars
write_excel()
dataframe method.
It also provides a secondary ExcelWriter
interface which is a simpler
Excel serializer that implements the Polars SerWriter
trait to write a
dataframe to an Excel Xlsx file. However, unless you have existing code that
uses the SerWriter
trait you should use the PolarsXlsxWriter
interface.
Unless you have existing code that uses the Polars SerWriter
trait you
should use the primary PolarsXlsxWriter
interface.
This crate uses rust_xlsxwriter
to do the Excel serialization.
Example
An example of writing a Polar Rust dataframe to an Excel file using the
PolarsXlsxWriter
interface.
use chrono::prelude::*;
use polars::prelude::*;
use polars_excel_writer::PolarsXlsxWriter;
fn main() -> PolarsResult<()> {
// Create a sample dataframe for the example.
let df: DataFrame = df!(
"String" => &["North", "South", "East", "West"],
"Integer" => &[1, 2, 3, 4],
"Float" => &[4.0, 5.0, 6.0, 7.0],
"Time" => &[
NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
NaiveTime::from_hms_milli_opt(2, 59, 3, 456).unwrap(),
],
"Date" => &[
NaiveDate::from_ymd_opt(2022, 1, 1).unwrap(),
NaiveDate::from_ymd_opt(2022, 1, 2).unwrap(),
NaiveDate::from_ymd_opt(2022, 1, 3).unwrap(),
NaiveDate::from_ymd_opt(2022, 1, 4).unwrap(),
],
"Datetime" => &[
NaiveDate::from_ymd_opt(2022, 1, 1).unwrap().and_hms_opt(1, 0, 0).unwrap(),
NaiveDate::from_ymd_opt(2022, 1, 2).unwrap().and_hms_opt(2, 0, 0).unwrap(),
NaiveDate::from_ymd_opt(2022, 1, 3).unwrap().and_hms_opt(3, 0, 0).unwrap(),
NaiveDate::from_ymd_opt(2022, 1, 4).unwrap().and_hms_opt(4, 0, 0).unwrap(),
],
)?;
// Create a new Excel writer.
let mut xlsx_writer = PolarsXlsxWriter::new();
// Write the dataframe to Excel.
xlsx_writer.write_dataframe(&df)?;
// Save the file to disk.
xlsx_writer.save("dataframe.xlsx")?;
Ok(())
}
Output file:
See also
- Changelog: Recent additions and fixes.
- Performance: Performance comparison with Python based methods.
Dependencies
~26–36MB
~593K SLoC