jmcnamara / rust_xlsxwriter

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

Bug: Using leader_lines leads to corrupted Excel #55

Closed sebastian2010 closed 9 months ago

sebastian2010 commented 9 months ago

Current behavior

When adding leader_lines than there is a left angle bracket too much in showLeaderLines tag which leads to a corrupted Excel file <<c15:showLeaderLines val="1"/>

Expected behavior

Valid Excel when using leader_lines

Sample code to reproduce

use rust_xlsxwriter::{
    Chart, ChartDataLabel, ChartDataLabelPosition, ChartFont, ChartType, Workbook, XlsxError,
};

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

    worksheet.write(0, 0, 10)?;
    worksheet.write(1, 0, 60)?;
    worksheet.write(2, 0, 30)?;
    worksheet.write(3, 0, 10)?;
    worksheet.write(4, 0, 50)?;

    let mut chart = Chart::new(ChartType::Column);

    chart
        .add_series()
        .set_values("Sheet1!$A$1:$A$5")
        .set_data_label(
            ChartDataLabel::new()
                .show_value()
                .set_position(ChartDataLabelPosition::OutsideEnd)
                .show_leader_lines()
                .set_font(ChartFont::new().set_name("Arial").set_size(8)),
        );

    worksheet.insert_chart(0, 2, &chart)?;

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

    Ok(())
}

Environment

- rust_xlsxwriter version: 0.51.0

Any other information

No response