/* Create a worksheet with a chart. */ int main() { lxw_workbook *workbook = new_workbook("chart_fonts.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); /* Write some data for the chart. */ worksheet_write_number(worksheet, 0, 0, 10, NULL); worksheet_write_number(worksheet, 1, 0, 40, NULL); worksheet_write_number(worksheet, 2, 0, 50, NULL); worksheet_write_number(worksheet, 3, 0, 20, NULL); worksheet_write_number(worksheet, 4, 0, 10, NULL); worksheet_write_number(worksheet, 5, 0, 50, NULL); /* Create a chart object. */ lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Configure the chart. */ chart_add_series(chart, NULL, "Sheet1!$A$1:$A$6"); /* Create some fonts to use in the chart. */ lxw_chart_font font1 = {.name = "Calibri", .color = LXW_COLOR_BLUE}; lxw_chart_font font2 = {.name = "Courier", .color = 0x92D050}; lxw_chart_font font3 = {.name = "Arial", .color = 0x00B0F0}; lxw_chart_font font4 = {.name = "Century", .color = LXW_COLOR_RED}; lxw_chart_font font5 = {.rotation = -30}; lxw_chart_font font6 = {.bold = LXW_TRUE, .italic = LXW_TRUE, .underline = LXW_TRUE, .color = 0x7030A0}; /* Write the chart title with a font. */ chart_title_set_name(chart, "Test Results"); chart_title_set_name_font(chart, &font1); /* Write the Y axis with a font. */ chart_axis_set_name(chart->y_axis, "Units"); chart_axis_set_name_font(chart->y_axis, &font2); chart_axis_set_num_font(chart->y_axis, &font3); /* Write the X axis with a font. */ chart_axis_set_name(chart->x_axis, "Month"); chart_axis_set_name_font(chart->x_axis, &font4); chart_axis_set_num_font(chart->x_axis, &font5); /* Display the chart legend at the bottom of the chart. */ chart_legend_set_position(chart, LXW_CHART_LEGEND_BOTTOM); chart_legend_set_font(chart, &font6); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("C1"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_axis10.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 41012608; chart->axis_id_2 = 55821440; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$B$1:$B$5" ); chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$C$1:$C$5" ); chart_axis_set_reverse(chart->x_axis); chart_axis_set_reverse(chart->y_axis); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_scatter09.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_SCATTER_SMOOTH_WITH_MARKERS); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 45953024; chart->axis_id_2 = 45954944; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); lxw_chart_series *series = chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$B$1:$B$5" ); chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$C$1:$C$5" ); chart_series_set_smooth(series, LXW_FALSE); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_data_labels05.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 45678592; chart->axis_id_2 = 45680128; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5"); lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$5"); lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5"); chart_series_set_labels(series1); chart_series_set_labels(series2); chart_series_set_labels(series3); chart_series_set_labels_position(series1, LXW_CHART_LABEL_POSITION_RIGHT); chart_series_set_labels_position(series2, LXW_CHART_LABEL_POSITION_ABOVE); chart_series_set_labels_position(series3, LXW_CHART_LABEL_POSITION_BELOW); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_data_labels22.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 45705856; chart->axis_id_2 = 45740416; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5"); lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$5"); chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5"); chart_series_set_labels(series1); chart_series_set_labels(series2); chart_series_set_labels_position(series2, LXW_CHART_LABEL_POSITION_INSIDE_BASE); chart_series_set_labels_num_format(series1, "#,##0.00"); chart_series_set_labels_num_format(series2, "0.00"); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_area03.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_AREA_STACKED_PERCENT); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 62813312; chart->axis_id_2 = 62814848; uint8_t data[5][3] = { {1, 8, 3}, {2, 7, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$B$1:$B$5" ); chart_add_series(chart, "=Sheet1!$A$1:$A$5", "=Sheet1!$C$1:$C$5" ); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_font09.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 68825472; chart->axis_id_2 = 68827392; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5"); chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$5"); chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5"); lxw_chart_font font1 = {.rotation = -45, .baseline = -1}; chart_title_set_name(chart, "Title"); chart_title_set_name_font(chart, &font1); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_bar55.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 64264064; chart->axis_id_2 = 64447232; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col] , NULL); lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5"); lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$5"); lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5"); /* Add cache data for testing. */ lxw_chart_add_data_cache(series1->values, data[0], 5, 3, 0); lxw_chart_add_data_cache(series2->values, data[0], 5, 3, 1); lxw_chart_add_data_cache(series3->values, data[0], 5, 3, 2); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_bar20.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 45925120; chart->axis_id_2 = 45927040; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); worksheet_write_string(worksheet, CELL("A7"), "Pear" , NULL); chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5"); lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$5"); lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5"); chart_series_set_name(series2, "Apple"); chart_series_set_name(series3, "=Sheet1!$A$7"); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_chartarea05.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_PIE); uint8_t data[3][2] = { {2, 60}, {4, 30}, {6, 10}, }; int row, col; for (row = 0; row < 3; row++) for (col = 0; col < 2; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); chart_add_series(chart, "=Sheet1!$A$1:$A$3", "=Sheet1!$B$1:$B$3" ); lxw_chart_line line1 = {.dash_type = LXW_CHART_LINE_DASH_LONG_DASH, .color = 0xFFFF00}; lxw_chart_line line2 = {.dash_type = LXW_CHART_LINE_DASH_DASH_DOT}; lxw_chart_fill fill1 = {.color = 0x92D050}; lxw_chart_fill fill2 = {.color = 0xFFC000}; chart_chartarea_set_line(chart, &line1); chart_chartarea_set_fill(chart, &fill1); /* This should be ignored for a pie chart. */ chart_plotarea_set_line(chart, &line2); chart_plotarea_set_fill(chart, &fill2); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_column07.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 68810240; chart->axis_id_2 = 68811776; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; int row, col; for (row = 0; row < 5; row++) for (col = 0; col < 3; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); lxw_chart_series *series1 = chart_add_series(chart, NULL, "=(Sheet1!$A$1:$A$2,Sheet1!$A$4:$A$5)"); worksheet_insert_chart(worksheet, CELL("E9"), chart); /* Add the cached data for testing. */ uint8_t test_data[4][3] = { {1, 2, 3}, {2, 4, 6}, {4, 8, 12}, {5, 10, 15} }; lxw_chart_add_data_cache(series1->values, test_data[0], 4, 3, 0); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_display_units01.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 69572096; chart->axis_id_2 = 93549312; worksheet_write_number(worksheet, 0, 0, 10000000, NULL); worksheet_write_number(worksheet, 1, 0, 20000000, NULL); worksheet_write_number(worksheet, 2, 0, 30000000, NULL); worksheet_write_number(worksheet, 3, 0, 20000000, NULL); worksheet_write_number(worksheet, 4, 0, 10000000, NULL); chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5"); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
int main() { lxw_workbook *workbook = new_workbook("test_chart_pattern03.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN); /* For testing, copy the randomly generated axis ids in the target file. */ chart->axis_id_1 = 110902272; chart->axis_id_2 = 110756608; uint8_t data[3][8] = { {2, 2, 2, 2, 2, 2, 2, 2}, {2, 2, 2, 2, 2, 2, 2, 2}, {2, 2, 2, 2, 2, 2, 2, 2} }; int row, col; for (row = 0; row < 3; row++) for (col = 0; col < 8; col++) worksheet_write_number(worksheet, row, col, data[row][col], NULL); lxw_chart_series *series1 = chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$3"); lxw_chart_series *series2 = chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$3"); lxw_chart_series *series3 = chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$3"); lxw_chart_series *series4 = chart_add_series(chart, NULL, "=Sheet1!$D$1:$D$3"); lxw_chart_series *series5 = chart_add_series(chart, NULL, "=Sheet1!$E$1:$E$3"); lxw_chart_series *series6 = chart_add_series(chart, NULL, "=Sheet1!$F$1:$F$3"); lxw_chart_series *series7 = chart_add_series(chart, NULL, "=Sheet1!$G$1:$G$3"); lxw_chart_series *series8 = chart_add_series(chart, NULL, "=Sheet1!$H$1:$H$3"); lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_PERCENT_10, .fg_color = 0xC00000, .bg_color = 0xFFFFFF}; lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_PERCENT_60, .fg_color = 0xFF0000}; lxw_chart_pattern pattern3 = {.type = LXW_CHART_PATTERN_LIGHT_UPWARD_DIAGONAL, .fg_color = 0xFFC000}; lxw_chart_pattern pattern4 = {.type = LXW_CHART_PATTERN_LIGHT_HORIZONTAL, .fg_color = 0xFFFF00}; lxw_chart_pattern pattern5 = {.type = LXW_CHART_PATTERN_DASHED_UPWARD_DIAGONAL, .fg_color = 0x92D050}; lxw_chart_pattern pattern6 = {.type = LXW_CHART_PATTERN_WAVE, .fg_color = 0x00B050}; lxw_chart_pattern pattern7 = {.type = LXW_CHART_PATTERN_DOTTED_GRID, .fg_color = 0x00B0F0}; lxw_chart_pattern pattern8 = {.type = LXW_CHART_PATTERN_LARGE_GRID, .fg_color = 0x0070C0}; chart_series_set_pattern(series1, &pattern1); chart_series_set_pattern(series2, &pattern2); chart_series_set_pattern(series3, &pattern3); chart_series_set_pattern(series4, &pattern4); chart_series_set_pattern(series5, &pattern5); chart_series_set_pattern(series6, &pattern6); chart_series_set_pattern(series7, &pattern7); chart_series_set_pattern(series8, &pattern8); worksheet_insert_chart(worksheet, CELL("E9"), chart); return workbook_close(workbook); }
/* Create a worksheet with a chart. */ int main() { lxw_workbook *workbook = new_workbook("chart_pattern.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart; /* Add a bold format to use to highlight the header cells. */ lxw_format *bold = workbook_add_format(workbook); format_set_bold(bold); /* Write some data for the chart. */ worksheet_write_string(worksheet, 0, 0, "Shingle", bold); worksheet_write_number(worksheet, 1, 0, 105, NULL); worksheet_write_number(worksheet, 2, 0, 150, NULL); worksheet_write_number(worksheet, 3, 0, 130, NULL); worksheet_write_number(worksheet, 4, 0, 90, NULL); worksheet_write_string(worksheet, 0, 1, "Brick", bold); worksheet_write_number(worksheet, 1, 1, 50, NULL); worksheet_write_number(worksheet, 2, 1, 120, NULL); worksheet_write_number(worksheet, 3, 1, 100, NULL); worksheet_write_number(worksheet, 4, 1, 110, NULL); /* Create a chart object. */ chart = workbook_add_chart(workbook, LXW_CHART_COLUMN); /* Configure the chart. */ lxw_chart_series *series1 = chart_add_series(chart, NULL, "Sheet1!$A$2:$A$5"); lxw_chart_series *series2 = chart_add_series(chart, NULL, "Sheet1!$B$2:$B$5"); chart_series_set_name(series1, "=Sheet1!$A$1"); chart_series_set_name(series2, "=Sheet1!$B$1"); chart_title_set_name(chart, "Cladding types"); chart_axis_set_name(chart->x_axis, "Region"); chart_axis_set_name(chart->y_axis, "Number of houses"); /* Configure an add the chart series patterns. */ lxw_chart_pattern pattern1 = {.type = LXW_CHART_PATTERN_SHINGLE, .fg_color = 0x804000, .bg_color = 0XC68C53}; lxw_chart_pattern pattern2 = {.type = LXW_CHART_PATTERN_HORIZONTAL_BRICK, .fg_color = 0XB30000, .bg_color = 0XFF6666}; chart_series_set_pattern(series1, &pattern1); chart_series_set_pattern(series2, &pattern2); /* Configure and set the chart series borders. */ lxw_chart_line line1 = {.color = 0x804000}; lxw_chart_line line2 = {.color = 0xb30000}; chart_series_set_line(series1, &line1); chart_series_set_line(series2, &line2); /* Widen the gap between the series/categories. */ chart_set_series_gap(chart, 70); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("D2"), chart); return workbook_close(workbook); }
/* * Create a worksheet with examples charts. */ int main() { lxw_workbook *workbook = new_workbook("chart_bar.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart_series *series; /* Add a bold format to use to highlight the header cells. */ lxw_format *bold = workbook_add_format(workbook); format_set_bold(bold); /* Write some data for the chart. */ write_worksheet_data(worksheet, bold); /* * Create a bar chart. */ lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); /* Set the name for the series instead of the default "Series 1". */ chart_series_set_name(series, "=Sheet1!$B1$1"); /* Add a second series but leave the categories and values undefined. They * can be defined later using the alternative syntax shown below. */ series = chart_add_series(chart, NULL, NULL); /* Configure the series using a syntax that is easier to define programmatically. */ chart_series_set_categories(series, "Sheet1", 1, 0, 6, 0); /* "=Sheet1!$A$2:$A$7" */ chart_series_set_values(series, "Sheet1", 1, 2, 6, 2); /* "=Sheet1!$C$2:$C$7" */ chart_series_set_name_range(series, "Sheet1", 0, 2); /* "=Sheet1!$C$1" */ /* Add a chart title and some axis labels. */ chart_title_set_name(chart, "Results of sample analysis"); chart_axis_set_name(chart->x_axis, "Test number"); chart_axis_set_name(chart->y_axis, "Sample length (mm)"); /* Set an Excel chart style. */ chart_set_style(chart, 11); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E2"), chart); /* * Create a stacked bar chart. */ chart = workbook_add_chart(workbook, LXW_CHART_BAR_STACKED); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); /* Set the name for the series instead of the default "Series 1". */ chart_series_set_name(series, "=Sheet1!$B1$1"); /* Add the second series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Set the name for the series instead of the default "Series 2". */ chart_series_set_name(series, "=Sheet1!$C1$1"); /* Add a chart title and some axis labels. */ chart_title_set_name(chart, "Results of sample analysis"); chart_axis_set_name(chart->x_axis, "Test number"); chart_axis_set_name(chart->y_axis, "Sample length (mm)"); /* Set an Excel chart style. */ chart_set_style(chart, 12); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E18"), chart); /* * Create a percent stacked bar chart. */ chart = workbook_add_chart(workbook, LXW_CHART_BAR_STACKED_PERCENT); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); /* Set the name for the series instead of the default "Series 1". */ chart_series_set_name(series, "=Sheet1!$B1$1"); /* Add the second series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Set the name for the series instead of the default "Series 2". */ chart_series_set_name(series, "=Sheet1!$C1$1"); /* Add a chart title and some axis labels. */ chart_title_set_name(chart, "Results of sample analysis"); chart_axis_set_name(chart->x_axis, "Test number"); chart_axis_set_name(chart->y_axis, "Sample length (mm)"); /* Set an Excel chart style. */ chart_set_style(chart, 13); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E34"), chart); return workbook_close(workbook); }
/* * Create a worksheet with examples charts. * */ int main() { lxw_workbook *workbook = new_workbook("chart_pie.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart *chart ; lxw_chart_series *series; /* Add a bold format to use to highlight the header cells. */ lxw_format *bold = workbook_add_format(workbook); format_set_bold(bold); /* Write some data for the chart. */ write_worksheet_data(worksheet, bold); /* * Chart 1: Create a simple pie chart. */ chart = workbook_add_chart(workbook, LXW_CHART_PIE); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$4", "=Sheet1!$B$2:$B$4"); /* Set the name for the series instead of the default "Series 1". */ chart_series_set_name(series, "Pie sales data"); /* Add a chart title. */ chart_title_set_name(chart, "Popular Pie Types"); /* Set an Excel chart style. */ chart_set_style(chart, 10); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("D2"), chart); /* * Chart 2: Create a pie chart with user defined segment colors. */ chart = workbook_add_chart(workbook, LXW_CHART_PIE); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$4", "=Sheet1!$B$2:$B$4"); /* Set the name for the series instead of the default "Series 1". */ chart_series_set_name(series, "Pie sales data"); /* Add a chart title. */ chart_title_set_name(chart, "Pie Chart with user defined colors"); /* Add for fills for use in the chart. */ lxw_chart_fill fill1 = {.color = 0x5ABA10}; lxw_chart_fill fill2 = {.color = 0xFE110E}; lxw_chart_fill fill3 = {.color = 0xCA5C05}; /* Add some points with the above fills. */ lxw_chart_point point1 = {.fill = &fill1}; lxw_chart_point point2 = {.fill = &fill2}; lxw_chart_point point3 = {.fill = &fill3}; /* Create an array of the point objects. */ lxw_chart_point *points[] = {&point1, &point2, &point3, NULL}; /* Add/override the points/segments of the chart. */ chart_series_set_points(series, points); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("D18"), chart); /* * Chart 3: Create a pie chart with rotation of the segments. */ chart = workbook_add_chart(workbook, LXW_CHART_PIE); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$4", "=Sheet1!$B$2:$B$4"); /* Set the name for the series instead of the default "Series 1". */ chart_series_set_name(series, "Pie sales data"); /* Add a chart title. */ chart_title_set_name(chart, "Pie Chart with segment rotation"); /* Change the angle/rotation of the first segment. */ chart_set_rotation(chart, 90); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("D34"), chart); return workbook_close(workbook); }
// Test assembling a complete Chart file. CTEST(chart, chart01) { lxw_chart_series *series1; lxw_chart_series *series2; uint8_t data[5][3] = { {1, 2, 3}, {2, 4, 6}, {3, 6, 9}, {4, 8, 12}, {5, 10, 15} }; char* got; char exp[] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n" "<c:chartSpace xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\" xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">" "<c:lang val=\"en-US\"/>" "<c:chart>" "<c:plotArea>" "<c:layout/>" "<c:barChart>" "<c:barDir val=\"bar\"/>" "<c:grouping val=\"clustered\"/>" "<c:ser>" "<c:idx val=\"0\"/>" "<c:order val=\"0\"/>" "<c:val>" "<c:numRef>" "<c:f>Sheet1!$A$1:$A$5</c:f>" "<c:numCache>" "<c:formatCode>General</c:formatCode>" "<c:ptCount val=\"5\"/>" "<c:pt idx=\"0\">" "<c:v>1</c:v>" "</c:pt>" "<c:pt idx=\"1\">" "<c:v>2</c:v>" "</c:pt>" "<c:pt idx=\"2\">" "<c:v>3</c:v>" "</c:pt>" "<c:pt idx=\"3\">" "<c:v>4</c:v>" "</c:pt>" "<c:pt idx=\"4\">" "<c:v>5</c:v>" "</c:pt>" "</c:numCache>" "</c:numRef>" "</c:val>" "</c:ser>" "<c:ser>" "<c:idx val=\"1\"/>" "<c:order val=\"1\"/>" "<c:val>" "<c:numRef>" "<c:f>Sheet1!$B$1:$B$5</c:f>" "<c:numCache>" "<c:formatCode>General</c:formatCode>" "<c:ptCount val=\"5\"/>" "<c:pt idx=\"0\">" "<c:v>2</c:v>" "</c:pt>" "<c:pt idx=\"1\">" "<c:v>4</c:v>" "</c:pt>" "<c:pt idx=\"2\">" "<c:v>6</c:v>" "</c:pt>" "<c:pt idx=\"3\">" "<c:v>8</c:v>" "</c:pt>" "<c:pt idx=\"4\">" "<c:v>10</c:v>" "</c:pt>" "</c:numCache>" "</c:numRef>" "</c:val>" "</c:ser>" "<c:axId val=\"50010001\"/>" "<c:axId val=\"50010002\"/>" "</c:barChart>" "<c:catAx>" "<c:axId val=\"50010001\"/>" "<c:scaling>" "<c:orientation val=\"minMax\"/>" "</c:scaling>" "<c:axPos val=\"l\"/>" "<c:tickLblPos val=\"nextTo\"/>" "<c:crossAx val=\"50010002\"/>" "<c:crosses val=\"autoZero\"/>" "<c:auto val=\"1\"/>" "<c:lblAlgn val=\"ctr\"/>" "<c:lblOffset val=\"100\"/>" "</c:catAx>" "<c:valAx>" "<c:axId val=\"50010002\"/>" "<c:scaling>" "<c:orientation val=\"minMax\"/>" "</c:scaling>" "<c:axPos val=\"b\"/>" "<c:majorGridlines/>" "<c:numFmt formatCode=\"General\" sourceLinked=\"1\"/>" "<c:tickLblPos val=\"nextTo\"/>" "<c:crossAx val=\"50010001\"/>" "<c:crosses val=\"autoZero\"/>" "<c:crossBetween val=\"between\"/>" "</c:valAx>" "</c:plotArea>" "<c:legend>" "<c:legendPos val=\"r\"/>" "<c:layout/>" "</c:legend>" "<c:plotVisOnly val=\"1\"/>" "</c:chart>" "<c:printSettings>" "<c:headerFooter/>" "<c:pageMargins b=\"0.75\" l=\"0.7\" r=\"0.7\" t=\"0.75\" header=\"0.3\" footer=\"0.3\"/>" "<c:pageSetup/>" "</c:printSettings>" "</c:chartSpace>"; FILE* testfile = lxw_tmpfile(NULL); lxw_chart *chart = lxw_chart_new(LXW_CHART_BAR); chart->file = testfile; series1 = chart_add_series(chart, NULL, "Sheet1!$A$1:$A$5"); series2 = chart_add_series(chart, NULL, "Sheet1!$B$1:$B$5"); lxw_chart_add_data_cache(series1->values, data[0], 5, 3, 0); lxw_chart_add_data_cache(series2->values, data[0], 5, 3, 1); lxw_chart_assemble_xml_file(chart); RUN_XLSX_STREQ_SHORT(exp, got); lxw_chart_free(chart); }
/* * Create a worksheet with examples charts. */ int main() { lxw_workbook *workbook = new_workbook("chart_data_tools.xlsx"); lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL); lxw_chart_series *series; /* Add a bold format to use to highlight the header cells. */ lxw_format *bold = workbook_add_format(workbook); format_set_bold(bold); /* Write some data for the chart. */ write_worksheet_data(worksheet, bold); /* * Chart 1. Example with High Low Lines. */ lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with High-Low Lines"); /* Add the first series to the chart. */ chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add high-low lines to the chart. */ chart_set_high_low_lines(chart, NULL); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E2"), chart); /* * Chart 2. Example with Drop Lines. */ chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with Drop Lines"); /* Add the first series to the chart. */ chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add drop lines to the chart. */ chart_set_drop_lines(chart, NULL); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E18"), chart); /* * Chart 3. Example with Up-Down bars. */ chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with Up-Down bars"); /* Add the first series to the chart. */ chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add Up-Down bars to the chart. */ chart_set_up_down_bars(chart); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E34"), chart); /* * Chart 4. Example with Up-Down bars with formatting. */ chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with Up-Down bars"); /* Add the first series to the chart. */ chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add Up-Down bars to the chart, with formatting. */ lxw_chart_line line = {.color = LXW_COLOR_BLACK}; lxw_chart_fill up_fill = {.color = 0x00B050}; lxw_chart_fill down_fill = {.color = LXW_COLOR_RED}; chart_set_up_down_bars_format(chart, &line, &up_fill, &line, &down_fill); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E50"), chart); /* * Chart 5. Example with Markers and data labels. */ chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with Data Labels and Markers"); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series( chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add series markers. */ chart_series_set_marker_type(series, LXW_CHART_MARKER_CIRCLE); /* Add series data labels. */ chart_series_set_labels(series); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E66"), chart); /* * Chart 6. Example with Error Bars. */ chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with Error Bars"); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series( chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add error bars to show Standard Error. */ chart_series_set_error_bars(series->y_error_bars, LXW_CHART_ERROR_BAR_TYPE_STD_ERROR, 0); /* Add series data labels. */ chart_series_set_labels(series); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E82"), chart); /* * Chart 7. Example with a trendline */ chart = workbook_add_chart(workbook, LXW_CHART_LINE); /* Add a chart title. */ chart_title_set_name(chart, "Chart with a Trendline"); /* Add the first series to the chart. */ series = chart_add_series(chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$B$2:$B$7"); chart_add_series( chart, "=Sheet1!$A$2:$A$7", "=Sheet1!$C$2:$C$7"); /* Add a polynomial trendline. */ lxw_chart_line poly_line = {.color = LXW_COLOR_GRAY, .dash_type = LXW_CHART_LINE_DASH_LONG_DASH}; chart_series_set_trendline(series, LXW_CHART_TRENDLINE_TYPE_POLY, 3); chart_series_set_trendline_line(series, &poly_line); /* Insert the chart into the worksheet. */ worksheet_insert_chart(worksheet, CELL("E98"), chart); return workbook_close(workbook); }