-
-
Notifications
You must be signed in to change notification settings - Fork 325
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature request: worksheet_write_rich_string() #37
Comments
+1 |
1 similar comment
+1 |
Since I've had a few requests about this I've added a note about making donations to prioritize this feature. |
There is now working code for this feature on the rich_strings branch. It still needs parameter validation and documentation before it is merged up to master but the core API and functionality is complete. Here is an example from the branch: /*
* An example of using the libxlsxwriter library to write some "rich strings",
* i.e., strings with multiple formats.
*
* Copyright 2014-2018, John McNamara, jmcnamara@cpan.org
*
*/
#include "xlsxwriter.h"
int main() {
lxw_workbook *workbook = workbook_new("rich_strings.xlsx");
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
/* Set up some formats to use. */
lxw_format *bold = workbook_add_format(workbook);
format_set_bold(bold);
lxw_format *italic = workbook_add_format(workbook);
format_set_italic(italic);
lxw_format *red = workbook_add_format(workbook);
format_set_font_color(red, LXW_COLOR_RED);
lxw_format *blue = workbook_add_format(workbook);
format_set_font_color(blue, LXW_COLOR_BLUE);
lxw_format *center = workbook_add_format(workbook);
format_set_align(center, LXW_ALIGN_CENTER);
lxw_format *superscript = workbook_add_format(workbook);
format_set_font_script(superscript, LXW_FONT_SUPERSCRIPT);
/* Make the first column wide for clarity. */
worksheet_set_column(worksheet, 0, 0, 30, NULL);
/* Create and write some rich strings with multiple formats. */
/* Example 1. Some bold and italic in the same string. */
lxw_rich_string_tuple fragment11 = {.format = NULL, .string = "This is "};
lxw_rich_string_tuple fragment12 = {.format = bold, .string = "bold"};
lxw_rich_string_tuple fragment13 = {.format = NULL, .string = " and this is "};
lxw_rich_string_tuple fragment14 = {.format = italic, .string = "italic"};
lxw_rich_string_tuple *rich_string1[] = {&fragment11, &fragment12,
&fragment13, &fragment14, NULL};
worksheet_write_rich_string(worksheet, CELL("A1"), rich_string1, NULL);
/* Example 2. Some red and blue coloring in the same string. */
lxw_rich_string_tuple fragment21 = {.format = NULL, .string = "This is "};
lxw_rich_string_tuple fragment22 = {.format = red, .string = "red"};
lxw_rich_string_tuple fragment23 = {.format = NULL, .string = " and this is "};
lxw_rich_string_tuple fragment24 = {.format = blue, .string = "blue"};
lxw_rich_string_tuple *rich_string2[] = {&fragment21, &fragment22,
&fragment23, &fragment24, NULL};
worksheet_write_rich_string(worksheet, CELL("A3"), rich_string2, NULL);
/* Example 3. A rich string plus cell formatting. */
lxw_rich_string_tuple fragment31 = {.format = NULL, .string = "Some "};
lxw_rich_string_tuple fragment32 = {.format = bold, .string = "bold text"};
lxw_rich_string_tuple fragment33 = {.format = NULL, .string = " centered"};
lxw_rich_string_tuple *rich_string3[] = {&fragment31, &fragment32,
&fragment33, NULL};
/* Note that is example also can a "center" cell format. */
worksheet_write_rich_string(worksheet, CELL("A5"), rich_string3, center);
/* Example 4. A math example with a superscript. */
lxw_rich_string_tuple fragment41 = {.format = italic, .string = "j =k"};
lxw_rich_string_tuple fragment42 = {.format = superscript, .string = "(n-1)"};
lxw_rich_string_tuple *rich_string4[] = {&fragment41, &fragment42, NULL};
worksheet_write_rich_string(worksheet, CELL("A7"), rich_string4, center);
workbook_close(workbook);
return 0;
} And the output: The key idea is to split the string into to fragments that are preceded by the format. If the format is The API is a little clunky, i.e., having to create a If you want to try it in advance let me know how you get on. All the tests are ported and passing. |
Added in version 0.8.3: https://libxlsxwriter.github.io/changes.html |
Add
worksheet_write_rich_string()
function like the Python XlsxWriter Worksheet methodwrite_rich_string()
.See https://xlsxwriter.readthedocs.io/example_rich_strings.html
Add +1 as a comment to vote for this feature and to get an update when it is implemented.
If you would like to make a donation to accelerate this feature you can do so via PayPal or contact me directly. Currently $0 of $500.
The text was updated successfully, but these errors were encountered: