#excel #xlsx #string-formatting #api-bindings #file-writer

xlsxwriter

Write xlsx file with number, formula, string, formatting, autofilter, merged cells, data validation and more

12 releases

0.6.1 Jun 22, 2024
0.6.0 Apr 11, 2023
0.5.0 Nov 13, 2022
0.3.5 Jul 13, 2021
0.2.0 Nov 19, 2019

#164 in Encoding

Download history 5272/week @ 2024-08-14 4471/week @ 2024-08-21 4938/week @ 2024-08-28 5766/week @ 2024-09-04 5511/week @ 2024-09-11 5069/week @ 2024-09-18 5766/week @ 2024-09-25 6535/week @ 2024-10-02 5024/week @ 2024-10-09 5725/week @ 2024-10-16 7724/week @ 2024-10-23 6503/week @ 2024-10-30 6953/week @ 2024-11-06 5989/week @ 2024-11-13 5605/week @ 2024-11-20 5056/week @ 2024-11-27

24,979 downloads per month
Used in 13 crates (12 directly)

Apache-2.0

2.5MB
47K SLoC

C 40K SLoC // 0.2% comments Rust 5.5K SLoC // 0.0% comments Bitbake 526 SLoC Shell 431 SLoC // 0.2% comments Zig 282 SLoC // 0.1% comments Perl 236 SLoC // 0.2% comments C++ 63 SLoC // 0.1% comments Swift 37 SLoC Automake 33 SLoC

xlsxwriter-rs

Build GitHub GitHub top language Crates.io Docs.rs

Rust binding of libxlsxwriter

Supported Features

  • 100% compatible Excel XLSX files.
  • Full Excel formatting.
  • Merged cells.
  • Autofilters.
  • Data validation and drop down lists.
  • Worksheet PNG/JPEG images.

Coming soon

  • Charts.

Feature Flags

  • no-md5: Disable image de-duplication and remove md5 function. (See upstream document to learn more).
  • use-openssl-md5: Use OpenSSL implementation of md5 function. (See upstream document to learn more).
  • system-zlib: Use system zlib instead of included zlib.

Build requirements

  • LLVM and clang

How to build on windows

  1. Install Visual Studio
  2. Install LLVM
  3. Set environment variable LIBCLANG_PATH as C:\Program Files\LLVM\bin
  4. Run build

Example

Result Image

let workbook = Workbook::new("simple1.xlsx")?;

let mut sheet1 = workbook.add_worksheet(None)?;
sheet1.write_string(0, 0, "Red text", Some(&Format::new().set_font_color(FormatColor::Red)))?;
sheet1.write_number(0, 1, 20., None)?;
sheet1.write_formula_num(1, 0, "=10+B1", None, 30.)?;
sheet1.write_url(
    1,
    1,
    "https://github.com/informationsea/xlsxwriter-rs",
    Some(&Format::new().set_font_color(FormatColor::Blue).set_underline(FormatUnderline::Single)),
)?;
sheet1.merge_range(2, 0, 3, 2, "Hello, world", Some(
    &Format::new().set_font_color(FormatColor::Green).set_align(FormatAlignment::CenterAcross)
                  .set_vertical_align(FormatVerticalAlignment::VerticalCenter)))?;

sheet1.set_selection(1, 0, 1, 2);
sheet1.set_tab_color(FormatColor::Cyan);
workbook.close()?;

Run Example with Cargo

You can explore this example locally following the steps below:

  1. Install LLVM and set LIBCLANG_PATH if you are using windows. (see bindgen doc for details)
  2. clone or fork this repository
  3. git submodule update --init --recursive
    • The above command downloads the required C library so we can compile
  4. cargo run --example hello_spreadsheet

You should then see the example in target/simple1.xlsx. Enjoy!

Dependencies