mirror of
https://github.com/jmcnamara/libxlsxwriter.git
synced 2026-05-15 14:15:54 -06:00
Add default hyperlink format as a style.
This commit is contained in:
parent
44bb2056e4
commit
f26aeacb86
41 changed files with 286 additions and 47 deletions
|
|
@ -15,36 +15,34 @@ int main() {
|
|||
/* Add a worksheet. */
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
/* Add some cell formats for the hyperlinks. */
|
||||
lxw_format *url_format = workbook_add_format(workbook);
|
||||
lxw_format *red_format = workbook_add_format(workbook);
|
||||
/* Get the default url format (used in the overwriting examples below). */
|
||||
lxw_format *url_format = workbook_get_default_url_format(workbook);
|
||||
|
||||
/* Create the standard url link format. */
|
||||
format_set_underline (url_format, LXW_UNDERLINE_SINGLE);
|
||||
format_set_font_color(url_format, LXW_COLOR_BLUE);
|
||||
|
||||
/* Create another sample format. */
|
||||
/* Create a user defined link format. */
|
||||
lxw_format *red_format = workbook_add_format(workbook);
|
||||
format_set_underline (red_format, LXW_UNDERLINE_SINGLE);
|
||||
format_set_font_color(red_format, LXW_COLOR_RED);
|
||||
|
||||
/* Widen the first column to make the text clearer. */
|
||||
worksheet_set_column(worksheet, 0, 0, 30, NULL);
|
||||
|
||||
/* Write a hyperlink. */
|
||||
worksheet_write_url(worksheet, 0, 0, "http://libxlsxwriter.github.io", url_format);
|
||||
/* Write a hyperlink. A default blue underline will be used if the format is NULL. */
|
||||
worksheet_write_url(worksheet, 0, 0, "http://libxlsxwriter.github.io", NULL);
|
||||
|
||||
/* Write a hyperlink but overwrite the displayed string. */
|
||||
worksheet_write_url (worksheet, 2, 0, "http://libxlsxwriter.github.io", url_format);
|
||||
/* Write a hyperlink but overwrite the displayed string. Note, we need to
|
||||
* specify the format for the string to match the default hyperlink. */
|
||||
worksheet_write_url (worksheet, 2, 0, "http://libxlsxwriter.github.io", NULL);
|
||||
worksheet_write_string(worksheet, 2, 0, "Read the documentation.", url_format);
|
||||
|
||||
/* Write a hyperlink with a different format. */
|
||||
worksheet_write_url(worksheet, 4, 0, "http://libxlsxwriter.github.io", red_format);
|
||||
|
||||
/* Write a mail hyperlink. */
|
||||
worksheet_write_url (worksheet, 6, 0, "mailto:jmcnamara@cpan.org", url_format);
|
||||
worksheet_write_url (worksheet, 6, 0, "mailto:jmcnamara@cpan.org", NULL);
|
||||
|
||||
/* Write a mail hyperlink and overwrite the displayed string. */
|
||||
worksheet_write_url (worksheet, 8, 0, "mailto:jmcnamara@cpan.org", url_format);
|
||||
/* Write a mail hyperlink and overwrite the displayed string. We again
|
||||
* specify the format for the string to match the default hyperlink. */
|
||||
worksheet_write_url (worksheet, 8, 0, "mailto:jmcnamara@cpan.org", NULL);
|
||||
worksheet_write_string(worksheet, 8, 0, "Drop me a line.", url_format);
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -783,6 +783,26 @@ lxw_error workbook_set_custom_property_datetime(lxw_workbook *workbook,
|
|||
lxw_error workbook_define_name(lxw_workbook *workbook, const char *name,
|
||||
const char *formula);
|
||||
|
||||
/**
|
||||
* @brief Get the default URL format used with `worksheet_write_url()`.
|
||||
*
|
||||
* @param workbook Pointer to a lxw_workbook instance.
|
||||
* @return A lxw_format instance that has hyperlink properties set.
|
||||
*
|
||||
* This function returns a lxw_format instance that is used for the default
|
||||
* blue underline hyperlink in the `worksheet_write_url()` function when a
|
||||
* format isn't specified:
|
||||
*
|
||||
* @code
|
||||
* lxw_format *url_format = workbook_get_default_url_format(workbook);
|
||||
* @endcode
|
||||
*
|
||||
* The format is the hyperlink style defined by Excel for the default theme.
|
||||
* This format is only ever required when overwriting a string URL with
|
||||
* data of a different type. See the example below.
|
||||
*/
|
||||
lxw_format *workbook_get_default_url_format(lxw_workbook *workbook);
|
||||
|
||||
/**
|
||||
* @brief Get a worksheet object from its name.
|
||||
*
|
||||
|
|
@ -914,6 +934,7 @@ lxw_error workbook_set_vba_name(lxw_workbook *workbook, const char *name);
|
|||
void lxw_workbook_free(lxw_workbook *workbook);
|
||||
void lxw_workbook_assemble_xml_file(lxw_workbook *workbook);
|
||||
void lxw_workbook_set_default_xf_indices(lxw_workbook *workbook);
|
||||
void workbook_unset_default_url_format(lxw_workbook *workbook);
|
||||
|
||||
DEPRECATED(lxw_workbook *new_workbook(const char *filename),
|
||||
"use 'workbook_new' instead");
|
||||
|
|
|
|||
|
|
@ -881,6 +881,7 @@ typedef struct lxw_worksheet {
|
|||
struct lxw_protection_obj protection;
|
||||
|
||||
lxw_drawing *drawing;
|
||||
lxw_format *default_url_format;
|
||||
|
||||
STAILQ_ENTRY (lxw_worksheet) list_pointers;
|
||||
|
||||
|
|
@ -899,6 +900,7 @@ typedef struct lxw_worksheet_init_data {
|
|||
char *name;
|
||||
char *quoted_name;
|
||||
char *tmpdir;
|
||||
lxw_format *default_url_format;
|
||||
|
||||
} lxw_worksheet_init_data;
|
||||
|
||||
|
|
@ -1201,21 +1203,22 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* worksheet cell specified by `row` and `column`.
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "http://libxlsxwriter.github.io", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "http://libxlsxwriter.github.io", NULL);
|
||||
* @endcode
|
||||
*
|
||||
* @image html hyperlinks_short.png
|
||||
*
|
||||
* The `format` parameter is used to apply formatting to the cell. This
|
||||
* parameter can be `NULL` to indicate no formatting or it can be a @ref
|
||||
* format.h "Format" object. The typical worksheet format for a hyperlink is a
|
||||
* blue underline:
|
||||
* parameter can be `NULL`, in which case the default Excel blue underlined
|
||||
* hyperlink style will be used. If required a user defined @ref format.h
|
||||
* "Format" object can be used:
|
||||
* underline:
|
||||
*
|
||||
* @code
|
||||
* lxw_format *url_format = workbook_add_format(workbook);
|
||||
*
|
||||
* format_set_underline (url_format, LXW_UNDERLINE_SINGLE);
|
||||
* format_set_font_color(url_format, LXW_COLOR_BLUE);
|
||||
* format_set_font_color(url_format, LXW_COLOR_RED);
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
|
|
@ -1223,10 +1226,10 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* and `mailto:` :
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "ftp://www.python.org/", url_format);
|
||||
* worksheet_write_url(worksheet, 1, 0, "http://www.python.org/", url_format);
|
||||
* worksheet_write_url(worksheet, 2, 0, "https://www.python.org/", url_format);
|
||||
* worksheet_write_url(worksheet, 3, 0, "mailto:jmcnamara@cpan.org", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "ftp://www.python.org/", NULL);
|
||||
* worksheet_write_url(worksheet, 1, 0, "http://www.python.org/", NULL);
|
||||
* worksheet_write_url(worksheet, 2, 0, "https://www.python.org/", NULL);
|
||||
* worksheet_write_url(worksheet, 3, 0, "mailto:jmcnamara@cpan.org", NULL);
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
|
|
@ -1235,13 +1238,18 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* link. However, it is possible to overwrite it with any other
|
||||
* `libxlsxwriter` type using the appropriate `worksheet_write_*()`
|
||||
* function. The most common case is to overwrite the displayed link text with
|
||||
* another string:
|
||||
* another string. To do this we must also match the default URL format using
|
||||
* `workbook_get_default_url_format()`:
|
||||
*
|
||||
* @code
|
||||
* // Write a hyperlink but overwrite the displayed string.
|
||||
* worksheet_write_url (worksheet, 2, 0, "http://libxlsxwriter.github.io", url_format);
|
||||
* worksheet_write_string(worksheet, 2, 0, "Read the documentation.", url_format);
|
||||
* // Write a hyperlink with the default blue underline format.
|
||||
* worksheet_write_url(worksheet, 2, 0, "http://libxlsxwriter.github.io", NULL);
|
||||
*
|
||||
* // Get the default url format.
|
||||
* lxw_format *url_format = workbook_get_default_url_format(workbook);
|
||||
*
|
||||
* // Overwrite the hyperlink with a user defined string and default format.
|
||||
* worksheet_write_string(worksheet, 2, 0, "Read the documentation.", url_format);
|
||||
* @endcode
|
||||
*
|
||||
* @image html hyperlinks_short2.png
|
||||
|
|
@ -1251,15 +1259,15 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* worksheet references:
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "internal:Sheet2!A1", url_format);
|
||||
* worksheet_write_url(worksheet, 1, 0, "internal:Sheet2!B2", url_format);
|
||||
* worksheet_write_url(worksheet, 2, 0, "internal:Sheet2!A1:B2", url_format);
|
||||
* worksheet_write_url(worksheet, 3, 0, "internal:'Sales Data'!A1", url_format);
|
||||
* worksheet_write_url(worksheet, 4, 0, "external:c:\\temp\\foo.xlsx", url_format);
|
||||
* worksheet_write_url(worksheet, 5, 0, "external:c:\\foo.xlsx#Sheet2!A1", url_format);
|
||||
* worksheet_write_url(worksheet, 6, 0, "external:..\\foo.xlsx", url_format);
|
||||
* worksheet_write_url(worksheet, 7, 0, "external:..\\foo.xlsx#Sheet2!A1", url_format);
|
||||
* worksheet_write_url(worksheet, 8, 0, "external:\\\\NET\\share\\foo.xlsx", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "internal:Sheet2!A1", NULL);
|
||||
* worksheet_write_url(worksheet, 1, 0, "internal:Sheet2!B2", NULL);
|
||||
* worksheet_write_url(worksheet, 2, 0, "internal:Sheet2!A1:B2", NULL);
|
||||
* worksheet_write_url(worksheet, 3, 0, "internal:'Sales Data'!A1", NULL);
|
||||
* worksheet_write_url(worksheet, 4, 0, "external:c:\\temp\\foo.xlsx", NULL);
|
||||
* worksheet_write_url(worksheet, 5, 0, "external:c:\\foo.xlsx#Sheet2!A1", NULL);
|
||||
* worksheet_write_url(worksheet, 6, 0, "external:..\\foo.xlsx", NULL);
|
||||
* worksheet_write_url(worksheet, 7, 0, "external:..\\foo.xlsx#Sheet2!A1", NULL);
|
||||
* worksheet_write_url(worksheet, 8, 0, "external:\\\\NET\\share\\foo.xlsx", NULL);
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
|
|
@ -1271,7 +1279,7 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* `#` character:
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:c:\\foo.xlsx#Sheet2!A1", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:c:\\foo.xlsx#Sheet2!A1", NULL);
|
||||
* @endcode
|
||||
*
|
||||
* You can also link to a named range in the target worksheet: For example say
|
||||
|
|
@ -1279,7 +1287,7 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* you could link to it as follows:
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:c:\\temp\\foo.xlsx#my_name", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:c:\\temp\\foo.xlsx#my_name", NULL);
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
|
|
@ -1287,14 +1295,14 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* characters are single quoted as follows:
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "internal:'Sales Data'!A1", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "internal:'Sales Data'!A1", NULL);
|
||||
* @endcode
|
||||
*
|
||||
* Links to network files are also supported. Network files normally begin
|
||||
* with two back slashes as follows `\\NETWORK\etc`. In order to represent
|
||||
* this in a C string literal the backslashes should be escaped:
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:\\\\NET\\share\\foo.xlsx", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:\\\\NET\\share\\foo.xlsx", NULL);
|
||||
* @endcode
|
||||
*
|
||||
*
|
||||
|
|
@ -1302,8 +1310,8 @@ lxw_error worksheet_write_datetime(lxw_worksheet *worksheet,
|
|||
* translated internally to backslashes:
|
||||
*
|
||||
* @code
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:c:/temp/foo.xlsx", url_format);
|
||||
* worksheet_write_url(worksheet, 1, 0, "external://NET/share/foo.xlsx", url_format);
|
||||
* worksheet_write_url(worksheet, 0, 0, "external:c:/temp/foo.xlsx", NULL);
|
||||
* worksheet_write_url(worksheet, 1, 0, "external://NET/share/foo.xlsx", NULL);
|
||||
*
|
||||
* @endcode
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1513,7 +1513,7 @@ workbook_add_worksheet(lxw_workbook *self, const char *sheetname)
|
|||
lxw_worksheet *worksheet = NULL;
|
||||
lxw_worksheet_name *worksheet_name = NULL;
|
||||
lxw_error error;
|
||||
lxw_worksheet_init_data init_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
lxw_worksheet_init_data init_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
char *new_name = NULL;
|
||||
|
||||
if (sheetname) {
|
||||
|
|
@ -1552,6 +1552,7 @@ workbook_add_worksheet(lxw_workbook *self, const char *sheetname)
|
|||
init_data.active_sheet = &self->active_sheet;
|
||||
init_data.first_sheet = &self->first_sheet;
|
||||
init_data.tmpdir = self->options.tmpdir;
|
||||
init_data.default_url_format = self->default_url_format;
|
||||
|
||||
/* Create a new worksheet object. */
|
||||
worksheet = lxw_worksheet_new(&init_data);
|
||||
|
|
@ -1595,7 +1596,7 @@ workbook_add_chartsheet(lxw_workbook *self, const char *sheetname)
|
|||
lxw_chartsheet *chartsheet = NULL;
|
||||
lxw_chartsheet_name *chartsheet_name = NULL;
|
||||
lxw_error error;
|
||||
lxw_worksheet_init_data init_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
lxw_worksheet_init_data init_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
|
||||
char *new_name = NULL;
|
||||
|
||||
if (sheetname) {
|
||||
|
|
@ -2164,6 +2165,29 @@ workbook_get_chartsheet_by_name(lxw_workbook *self, const char *name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the default URL format.
|
||||
*/
|
||||
lxw_format *
|
||||
workbook_get_default_url_format(lxw_workbook *self)
|
||||
{
|
||||
return self->default_url_format;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get the default URL format.
|
||||
*/
|
||||
void
|
||||
workbook_unset_default_url_format(lxw_workbook *self)
|
||||
{
|
||||
self->default_url_format->hyperlink = LXW_FALSE;
|
||||
self->default_url_format->xf_id = 0;
|
||||
self->default_url_format->underline = LXW_UNDERLINE_NONE;
|
||||
self->default_url_format->theme = 0;
|
||||
}
|
||||
|
||||
lxw_format *default_url_format;
|
||||
|
||||
/*
|
||||
* Validate the worksheet name based on Excel's rules.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -205,6 +205,7 @@ lxw_worksheet_new(lxw_worksheet_init_data *init_data)
|
|||
worksheet->optimize = init_data->optimize;
|
||||
worksheet->active_sheet = init_data->active_sheet;
|
||||
worksheet->first_sheet = init_data->first_sheet;
|
||||
worksheet->default_url_format = init_data->default_url_format;
|
||||
}
|
||||
|
||||
return worksheet;
|
||||
|
|
@ -4172,7 +4173,7 @@ lxw_error
|
|||
worksheet_write_url_opt(lxw_worksheet *self,
|
||||
lxw_row_t row_num,
|
||||
lxw_col_t col_num, const char *url,
|
||||
lxw_format *format, const char *string,
|
||||
lxw_format *user_format, const char *string,
|
||||
const char *tooltip)
|
||||
{
|
||||
lxw_cell *link;
|
||||
|
|
@ -4183,6 +4184,7 @@ worksheet_write_url_opt(lxw_worksheet *self,
|
|||
char *tooltip_copy = NULL;
|
||||
char *found_string;
|
||||
char *tmp_string = NULL;
|
||||
lxw_format *format = NULL;
|
||||
lxw_error err;
|
||||
size_t string_size;
|
||||
size_t i;
|
||||
|
|
@ -4314,6 +4316,12 @@ worksheet_write_url_opt(lxw_worksheet *self,
|
|||
if (lxw_utf8_strlen(url_copy) > 255)
|
||||
goto mem_error;
|
||||
|
||||
/* Use the default URL format if none is specified. */
|
||||
if (!user_format)
|
||||
format = self->default_url_format;
|
||||
else
|
||||
format = user_format;
|
||||
|
||||
err = worksheet_write_string(self, row_num, col_num, string_copy, format);
|
||||
if (err)
|
||||
goto mem_error;
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ int main() {
|
|||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_BAR);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart->axis_id_1 = 40522880;
|
||||
chart->axis_id_2 = 40524416;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ int main() {
|
|||
lxw_chart *chart2 = workbook_add_chart(workbook, LXW_CHART_BAR);
|
||||
lxw_chart *chart3 = workbook_add_chart(workbook, LXW_CHART_BAR);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart1->axis_id_1 = 40274944;
|
||||
chart1->axis_id_2 = 40294272;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@ int main() {
|
|||
lxw_chart *chart2 = workbook_add_chart(workbook, LXW_CHART_BAR);
|
||||
lxw_chart *chart3 = workbook_add_chart(workbook, LXW_CHART_COLUMN);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
/* For testing, copy the randomly generated axis ids in the target file. */
|
||||
chart1->axis_id_1 = 40294272;
|
||||
chart1->axis_id_2 = 40295808;
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_escapes04.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.com/?a=1&b=2" , NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ int main() {
|
|||
lxw_worksheet *worksheet1 = workbook_add_worksheet(workbook, "Start");
|
||||
lxw_worksheet *worksheet2 = workbook_add_worksheet(workbook, "A & B");
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
(void)worksheet2;
|
||||
|
||||
worksheet_write_url_opt(worksheet1, CELL("A1"), "internal:'A & B'!A1", NULL, "Jump to A & B" , NULL);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_escapes07.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://example.com/!\"$%&'( )*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_escapes08.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
/* Test an already escaped string. */
|
||||
worksheet_write_url_opt(worksheet, CELL("A1"), "http://example.com/%5b0%5d", NULL, "http://example.com/[0]", NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink01.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.org/" , NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink02.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.org/", NULL);
|
||||
worksheet_write_url(worksheet, CELL("D4"), "http://www.perl.org/", NULL);
|
||||
worksheet_write_url(worksheet, CELL("A8"), "http://www.perl.org/", NULL);
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ int main() {
|
|||
lxw_worksheet *worksheet1 = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_worksheet *worksheet2 = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet1, CELL("A1"), "http://www.perl.org/", NULL);
|
||||
worksheet_write_url(worksheet1, CELL("D4"), "http://www.perl.org/", NULL);
|
||||
worksheet_write_url(worksheet1, CELL("A8"), "http://www.perl.org/", NULL);
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ int main() {
|
|||
lxw_worksheet *worksheet2 = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_worksheet *worksheet3 = workbook_add_worksheet(workbook, "Data Sheet");
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
(void)worksheet2;
|
||||
(void)worksheet3;
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink05.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url( worksheet, CELL("A1"), "http://www.perl.org/", NULL);
|
||||
worksheet_write_url_opt(worksheet, CELL("A3"), "http://www.perl.org/", NULL, "Perl home", NULL);
|
||||
worksheet_write_url_opt(worksheet, CELL("A5"), "http://www.perl.org/", NULL, "Perl home", "Tool Tip");
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink06.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url_opt(worksheet, CELL("A1"), "external:C:\\Temp\\foo.xlsx", NULL, NULL, NULL);
|
||||
worksheet_write_url_opt(worksheet, CELL("A3"), "external:C:\\Temp\\foo.xlsx#Sheet1!A1", NULL, NULL, NULL);
|
||||
worksheet_write_url_opt(worksheet, CELL("A5"), "external:C:\\Temp\\foo.xlsx#Sheet1!A1", NULL, "External", "Tip");
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink07.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url_opt(worksheet, CELL("A1"), "external:\\\\VBOXSVR\\share\\foo.xlsx", NULL, "J:\\foo.xlsx", NULL);
|
||||
worksheet_write_url( worksheet, CELL("A3"), "external:foo.xlsx" , NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink08.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
/* Test with forward slashes instead of back slashes in test_hyperlink07.c. */
|
||||
worksheet_write_url_opt(worksheet, CELL("A1"), "external://VBOXSVR/share/foo.xlsx", NULL, "J:/foo.xlsx", NULL);
|
||||
worksheet_write_url( worksheet, CELL("A3"), "external:foo.xlsx" , NULL);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink09.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "external:..\\foo.xlsx" , NULL);
|
||||
worksheet_write_url(worksheet, CELL("A3"), "external:..\\foo.xlsx#Sheet1!A1" , NULL);
|
||||
worksheet_write_url_opt(worksheet, CELL("A5"), "external:\\\\VBOXSVR\\share\\foo.xlsx#Sheet1!B2", NULL, "J:\\foo.xlsx#Sheet1!B2", NULL);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink15.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("B2"), "external:subdir/blank.xlsx", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink16.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("B2"), "external:./subdir/blank.xlsx", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink17.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
/* URL with whitespace. */
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://google.com/some link", NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink18.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://google.com/00000000001111111111222222222233333333334444444444555555555566666666666777777777778888888888999999999990000000000111111111122222222223333333333444444444455555555556666666666677777777777888888888899999999999000000000011111111112222222222x", NULL);
|
||||
|
||||
/* This longer url should be ignored. */
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink21.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "external:C:\\Temp\\Test 1" , NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink22.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "external:\\\\Vboxsvr\\share\\foo bar.xlsx", NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink23.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url_opt(worksheet, CELL("A1"), "https://en.wikipedia.org/wiki/Microsoft_Excel#Data_storage_and_communication", NULL, "Display text", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink24.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.example.com/some_long_url_that_is_255_characters_long_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_z#some_long_location_that_is_255_characters_long_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_abcdefgh_z", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink25.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.google.com/#foo#bar", NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink26.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.google.com/foo#bar#baz", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink27.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "external:\\\\Vboxsvr\\share\\foo bar.xlsx#'Some Sheet'!A1", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ int main() {
|
|||
lxw_workbook *workbook = workbook_new("test_hyperlink28.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.org/", workbook->default_url_format);
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.org/", NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
|
|
|
|||
28
test/functional/src/test_hyperlink29.c
Normal file
28
test/functional/src/test_hyperlink29.c
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = workbook_new("test_hyperlink29.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_format *format1 = workbook_add_format(workbook);
|
||||
lxw_format *format2 = workbook_add_format(workbook);
|
||||
|
||||
format_set_hyperlink(format1);
|
||||
|
||||
format_set_underline(format2, LXW_UNDERLINE_SINGLE);
|
||||
format_set_font_color(format2, LXW_COLOR_RED);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.org/", format1);
|
||||
worksheet_write_url(worksheet, CELL("A2"), "http://www.perl.com/", format2);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
36
test/functional/src/test_hyperlink30.c
Normal file
36
test/functional/src/test_hyperlink30.c
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = workbook_new("test_hyperlink30.xlsx");
|
||||
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_format *format1 = workbook_add_format(workbook);
|
||||
lxw_format *format2 = workbook_add_format(workbook);
|
||||
lxw_format *format3 = workbook_add_format(workbook);
|
||||
|
||||
workbook_unset_default_url_format(workbook);
|
||||
|
||||
format_set_hyperlink(format1);
|
||||
|
||||
format_set_underline(format2, LXW_UNDERLINE_SINGLE);
|
||||
format_set_font_color(format2, LXW_COLOR_RED);
|
||||
|
||||
format_set_font_color(format3, LXW_COLOR_BLUE);
|
||||
format_set_underline(format3, LXW_UNDERLINE_SINGLE);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.python.org/1", format1);
|
||||
worksheet_write_url(worksheet, CELL("A2"), "http://www.python.org/2", format2);
|
||||
worksheet_write_url(worksheet, CELL("A3"), "http://www.python.org/3", format3);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
24
test/functional/src/test_hyperlink31.c
Normal file
24
test/functional/src/test_hyperlink31.c
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = workbook_new("test_hyperlink31.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
lxw_format *format1 = workbook_add_format(workbook);
|
||||
|
||||
format_set_bold(format1);
|
||||
|
||||
worksheet_write_string(worksheet, CELL("A1"), "Test", format1);
|
||||
worksheet_write_url(worksheet, CELL("A3"), "http://www.python.org/" , NULL);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
22
test/functional/src/test_hyperlink78.c
Normal file
22
test/functional/src/test_hyperlink78.c
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
/*****************************************************************************
|
||||
* Test cases for libxlsxwriter.
|
||||
*
|
||||
* Test to compare output against Excel files.
|
||||
*
|
||||
* Copyright 2014-2019, John McNamara, jmcnamara@cpan.org
|
||||
*
|
||||
*/
|
||||
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
lxw_workbook *workbook = workbook_new("test_hyperlink78.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
lxw_format *default_url_format = workbook_get_default_url_format(workbook);
|
||||
|
||||
worksheet_write_url(worksheet, CELL("A1"), "http://www.perl.org/", default_url_format);
|
||||
|
||||
return workbook_close(workbook);
|
||||
}
|
||||
|
|
@ -109,3 +109,21 @@ class TestCompareXLSXFiles(base_test_class.XLSXBaseTest):
|
|||
|
||||
def test_hyperlink28(self):
|
||||
self.run_exe_test('test_hyperlink28')
|
||||
|
||||
def test_hyperlink29(self):
|
||||
self.run_exe_test('test_hyperlink29')
|
||||
|
||||
def test_hyperlink30(self):
|
||||
# Ignore custom colors in styles.xml file.
|
||||
self.ignore_elements = {'xl/styles.xml': ['<color',
|
||||
'<mruColors>',
|
||||
'</mruColors>',
|
||||
'</colors>']}
|
||||
self.run_exe_test('test_hyperlink30')
|
||||
|
||||
def test_hyperlink31(self):
|
||||
self.run_exe_test('test_hyperlink31')
|
||||
|
||||
# Copy of hyperlink28 with explicit formatting.
|
||||
def test_hyperlink78(self):
|
||||
self.run_exe_test('test_hyperlink78', 'hyperlink28.xlsx')
|
||||
|
|
|
|||
BIN
test/functional/xlsx_files/hyperlink29.xlsx
Normal file
BIN
test/functional/xlsx_files/hyperlink29.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/hyperlink30.xlsx
Normal file
BIN
test/functional/xlsx_files/hyperlink30.xlsx
Normal file
Binary file not shown.
BIN
test/functional/xlsx_files/hyperlink31.xlsx
Normal file
BIN
test/functional/xlsx_files/hyperlink31.xlsx
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue