jmcnamara / rust_xlsxwriter

A Rust library for creating Excel XLSX files.
https://crates.io/crates/rust_xlsxwriter
Apache License 2.0
316 stars 25 forks source link

Set the Worksheet name before adding it to the Workbook #33

Closed claudiofsr closed 1 year ago

claudiofsr commented 1 year ago

Feature Request

It is possible something like that:

  let mut worksheet = Worksheet::new();
  worksheet.set_name("Name XYZ")?;

or

  let worksheet = Worksheet::new("Name XYZ");

And then:

  workbook.push_worksheet(worksheet);

I don not want to use:

  let _worksheet3 = workbook.add_worksheet().set_name("Data");

I would like to create multiple worksheets with previous names:

 let mut worksheets: Vec<Worksheet> = Vec::new();

 // Split a vector into smaller vectors of size N
 vector.chunks(SPLIT_NUMBER).enumerate.for_each(|(index, data)| {
    let name = format("Name {}", index);
    let worksheet = Worksheet::new(name);
    ...
    worksheets.push(worksheet);
 });

 ...

 worksheets.for_each(|worksheet| {
    workbook.push_worksheet(worksheet);
 }

Thanks!

jmcnamara commented 1 year ago

That should work as expected with the current version (and previous versions):

use rust_xlsxwriter::{Workbook, Worksheet, XlsxError};

fn main() -> Result<(), XlsxError> {
    let mut workbook = Workbook::new();

    let mut worksheet = Worksheet::new();

    worksheet.set_name("Name XYZ")?;

    worksheet.write_string(0, 0, "Hello")?;

    workbook.push_worksheet(worksheet);

    workbook.save("gh33.xlsx")?;

    Ok(())
}

Output:

screenshot

claudiofsr commented 1 year ago

Perfect! Thank you very much. Sorry for disturbing!

jmcnamara commented 1 year ago

No problem. 🙂

jmcnamara commented 1 year ago

I'm going to clean up/remove the similar question on the roadmap just to keep the discussion cleaner and more roadmap focused.