9 releases (stable)

1.1.7 Jun 22, 2024
1.1.5 Apr 11, 2023
1.1.4 Aug 19, 2022
1.1.1 Jul 13, 2021
0.8.7 Nov 17, 2019

#201 in Compression

Download history 5058/week @ 2024-07-21 5264/week @ 2024-07-28 4798/week @ 2024-08-04 5561/week @ 2024-08-11 4815/week @ 2024-08-18 5143/week @ 2024-08-25 4894/week @ 2024-09-01 5600/week @ 2024-09-08 5192/week @ 2024-09-15 5720/week @ 2024-09-22 6790/week @ 2024-09-29 4993/week @ 2024-10-06 5564/week @ 2024-10-13 6990/week @ 2024-10-20 7056/week @ 2024-10-27 6976/week @ 2024-11-03

26,779 downloads per month
Used in 14 crates (via xlsxwriter)

MIT license

2MB
42K SLoC

C 40K SLoC // 0.2% comments Bitbake 527 SLoC Shell 432 SLoC // 0.2% comments Zig 283 SLoC // 0.1% comments Perl 237 SLoC // 0.2% comments Rust 123 SLoC // 0.0% comments C++ 64 SLoC // 0.1% comments Swift 38 SLoC // 0.1% comments Automake 34 SLoC

Contains (Cab file, 16KB) vbaProject.bin, (obscure autoconf code, 1KB) configure.ac

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!

No runtime deps