Feature request: workbook_add_chart() #36

Closed
jmcnamara opened this Issue Dec 10, 2015 · 12 comments

Comments

Projects
None yet
4 participants
@jmcnamara
Owner

jmcnamara commented Dec 10, 2015

Add workbook_add_chart() function like the Python XlsxWriter Workbook method add_chart().
See https://xlsxwriter.readthedocs.org/index.html

  • Difficulty: 5 (Easy 1 - 5 Hard)
  • Priority: 1 (High 1 - 5 Low)

Add +1 as a comment to vote for this feature and to get an update when it is implemented.

@jmcnamara jmcnamara self-assigned this Dec 10, 2015

@jmcnamara jmcnamara added this to the Phase3 milestone Dec 10, 2015

@mts749

This comment has been minimized.

Show comment
Hide comment

mts749 commented Dec 10, 2015

+1

@nelson2005

This comment has been minimized.

Show comment
Hide comment

+1

@jmcnamara

This comment has been minimized.

Show comment
Hide comment
@jmcnamara

jmcnamara Jan 3, 2016

Owner

Note, the Phase 1 features are now complete. Since there seems to be more interest in charts than in other features I've move this to the next in line feature.

It will take several months. I'll post updates as soon as there is some working code.

Owner

jmcnamara commented Jan 3, 2016

Note, the Phase 1 features are now complete. Since there seems to be more interest in charts than in other features I've move this to the next in line feature.

It will take several months. I'll post updates as soon as there is some working code.

@mts749

This comment has been minimized.

Show comment
Hide comment
@mts749

mts749 Jan 3, 2016

Great!! Many thanks. If I can help in any way please let me know.

mts749 commented Jan 3, 2016

Great!! Many thanks. If I can help in any way please let me know.

@slugdev

This comment has been minimized.

Show comment
Hide comment

slugdev commented Mar 22, 2016

+1

@jmcnamara

This comment has been minimized.

Show comment
Hide comment
@jmcnamara

jmcnamara May 2, 2016

Owner

Just a note that I have started the chart implementation. It is on a development branch called charts but it is not ready for general consumption yet.

Nevertheless, I wanted to share the first working example:

#include "xlsxwriter.h"

int main() {

    lxw_workbook  *workbook  = new_workbook("chart_bar.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
    int row, col;

    /* Some data for the chart. */
    uint8_t data[5][3] = {
        {1, 2,  3},
        {2, 4,  6},
        {3, 6,  9},
        {4, 8,  12},
        {5, 10, 15}
    };

    /* Write the data to the worksheet. */
    for (row = 0; row < 5; row++)
        for (col = 0; col < 3; col++)
            worksheet_write_number(worksheet, row, col, data[row][col] , NULL);


    /* Create a chart object. */
    lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR);

    /* Add two series to the chart. */
    chart_add_series(chart, NULL, "Sheet1!$A$1:$A$5");
    chart_add_series(chart, NULL, "Sheet1!$B$1:$B$5");

    /* Position the chart in the worksheet. */
    worksheet_insert_chart(worksheet, CELL("B7"), chart);

    return workbook_close(workbook);
}

Which gives this output:

screen shot 2016-05-03 at 00 17 20

I'll post an update when there is something usable for testing.

Owner

jmcnamara commented May 2, 2016

Just a note that I have started the chart implementation. It is on a development branch called charts but it is not ready for general consumption yet.

Nevertheless, I wanted to share the first working example:

#include "xlsxwriter.h"

int main() {

    lxw_workbook  *workbook  = new_workbook("chart_bar.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
    int row, col;

    /* Some data for the chart. */
    uint8_t data[5][3] = {
        {1, 2,  3},
        {2, 4,  6},
        {3, 6,  9},
        {4, 8,  12},
        {5, 10, 15}
    };

    /* Write the data to the worksheet. */
    for (row = 0; row < 5; row++)
        for (col = 0; col < 3; col++)
            worksheet_write_number(worksheet, row, col, data[row][col] , NULL);


    /* Create a chart object. */
    lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR);

    /* Add two series to the chart. */
    chart_add_series(chart, NULL, "Sheet1!$A$1:$A$5");
    chart_add_series(chart, NULL, "Sheet1!$B$1:$B$5");

    /* Position the chart in the worksheet. */
    worksheet_insert_chart(worksheet, CELL("B7"), chart);

    return workbook_close(workbook);
}

Which gives this output:

screen shot 2016-05-03 at 00 17 20

I'll post an update when there is something usable for testing.

@nelson2005

This comment has been minimized.

Show comment
Hide comment
@nelson2005

nelson2005 May 4, 2016

Sweet!  It's great to see this progress on the charting!

nelson2005 commented May 4, 2016

Sweet!  It's great to see this progress on the charting!

@jmcnamara

This comment has been minimized.

Show comment
Hide comment
@jmcnamara

jmcnamara May 23, 2016

Owner

The chart work is stable now and I have moved it to the master branch in preparation for a release in the next few days.

This took a bit of work:

$ git diff master --stat
...
235 files changed, 10238 insertions(+), 583 deletions(-)

I've updated the documentation see: chart.h and the chart example.

The documentation still needs some additional work before the release but the code is well tested and useable.

Note, not all of the chart features in the Perl/Python versions are available yet. That will take some time and I will open other issues trackers to track the progress of those.

I would be good if you could try the current version on master and let me know what you think.

Owner

jmcnamara commented May 23, 2016

The chart work is stable now and I have moved it to the master branch in preparation for a release in the next few days.

This took a bit of work:

$ git diff master --stat
...
235 files changed, 10238 insertions(+), 583 deletions(-)

I've updated the documentation see: chart.h and the chart example.

The documentation still needs some additional work before the release but the code is well tested and useable.

Note, not all of the chart features in the Perl/Python versions are available yet. That will take some time and I will open other issues trackers to track the progress of those.

I would be good if you could try the current version on master and let me know what you think.

@nelson2005

This comment has been minimized.

Show comment
Hide comment
@nelson2005

nelson2005 May 23, 2016

Wow, you've been busy!  This is such a cool project.  Great work, I imagine it must be a little tedious for you, having done similar work a number of times before in Python/Perl/Lua
My main interest is the Lua end of things.  Have  you run into anyone else who has an interest in a Lua binding for libxlsxwriter?
Erik

nelson2005 commented May 23, 2016

Wow, you've been busy!  This is such a cool project.  Great work, I imagine it must be a little tedious for you, having done similar work a number of times before in Python/Perl/Lua
My main interest is the Lua end of things.  Have  you run into anyone else who has an interest in a Lua binding for libxlsxwriter?
Erik

@jmcnamara

This comment has been minimized.

Show comment
Hide comment
@jmcnamara

jmcnamara May 24, 2016

Owner

@nelson2005 I'll open up a new Feature Request issue for Lua bindings to let people know. There are a couple of people who were active on the pure Lua port who might be interested in helping out. I'm not. :-)

Owner

jmcnamara commented May 24, 2016

@nelson2005 I'll open up a new Feature Request issue for Lua bindings to let people know. There are a couple of people who were active on the pure Lua port who might be interested in helping out. I'm not. :-)

@jmcnamara

This comment has been minimized.

Show comment
Hide comment
@jmcnamara

jmcnamara May 24, 2016

Owner

The chart feature has been merged to master and released. I'll close this issue shortly when I open up some others to track the missing features.

Owner

jmcnamara commented May 24, 2016

The chart feature has been merged to master and released. I'll close this issue shortly when I open up some others to track the missing features.

@jmcnamara

This comment has been minimized.

Show comment
Hide comment
@jmcnamara

jmcnamara Jun 13, 2016

Owner

See #51 for additional chart features. Closing this since the basic chart functionality has been added.

Owner

jmcnamara commented Jun 13, 2016

See #51 for additional chart features. Closing this since the basic chart functionality has been added.

@jmcnamara jmcnamara closed this Jun 13, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment