Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jmcnamara/polars_excel_writer
A Polars extension to serialize dataframes to Excel xlsx files
https://github.com/jmcnamara/polars_excel_writer
Last synced: 17 days ago
JSON representation
A Polars extension to serialize dataframes to Excel xlsx files
- Host: GitHub
- URL: https://github.com/jmcnamara/polars_excel_writer
- Owner: jmcnamara
- License: apache-2.0
- Created: 2023-08-08T23:41:18.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-17T23:26:16.000Z (about 2 months ago)
- Last Synced: 2024-10-14T01:43:39.476Z (about 1 month ago)
- Language: Rust
- Size: 142 KB
- Stars: 14
- Watchers: 3
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE_Apache2.0
Awesome Lists containing this project
README
# polars_excel_writer
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.[`ExcelWriter`]: https://docs.rs/polars_excel_writer/latest/polars_excel_writer/write/struct.ExcelWriter.html
[`PolarsXlsxWriter`]: https://docs.rs/polars_excel_writer/latest/polars_excel_writer/xlsx_writer/struct.PolarsXlsxWriter.html[`SerWriter`]:
https://docs.rs/polars/latest/polars/prelude/trait.SerWriter.html[`CsvWriter`]:
https://docs.rs/polars/latest/polars/prelude/struct.CsvWriter.html[`rust_xlsxwriter`]: https://docs.rs/rust_xlsxwriter/latest/rust_xlsxwriter/
[`write_excel()`]:
https://pola-rs.github.io/polars/py-polars/html/reference/api/polars.DataFrame.write_excel.html#polars.DataFrame.write_excel## 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::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(),
],
)
.unwrap();example1(&mut df).unwrap();
example2(&df).unwrap();
}// The ExcelWriter interface.
use polars_excel_writer::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 polars_excel_writer::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):
## See also
- [Changelog]: Recent additions and fixes.
- [Performance]: Performance comparison with Python based methods.[Changelog]: https://github.com/jmcnamara/polars_excel_writer/blob/main/CHANGELOG.md
[Performance]: https://docs.rs/polars_excel_writer/latest/polars_excel_writer/#performance