summaryrefslogtreecommitdiffstats
path: root/src/xlsx.c
diff options
context:
space:
mode:
authormongo <andmarti@gmail.com>2017-03-23 14:36:51 -0300
committermongo <andmarti@gmail.com>2017-03-23 14:36:51 -0300
commit3a02b655cd013e45041ac4b34b1ff4b69fe7b3b4 (patch)
tree26f83f4466a6b9af2355c9c227d84d5f37c26d8e /src/xlsx.c
parenta6a1bda4c6a1fd35f6aa7518ea4ed937d826afe6 (diff)
Added date format in xlsx export
Diffstat (limited to 'src/xlsx.c')
-rw-r--r--src/xlsx.c36
1 files changed, 28 insertions, 8 deletions
diff --git a/src/xlsx.c b/src/xlsx.c
index e17abf7..3bef43e 100644
--- a/src/xlsx.c
+++ b/src/xlsx.c
@@ -406,11 +406,11 @@ int export_xlsx(char * filename, int r0, int c0, int rn, int cn) {
lxw_format * format = workbook_add_format(workbook);
// handle alignment
- if ((*pp)->label && (*pp)->flags & is_label) //center align
+ if ((*pp)->label && (*pp)->flags & is_label) // center align
format_set_align(format, LXW_ALIGN_CENTER);
else if ((*pp)->label && (*pp)->flags & is_leftflush) // left align
format_set_align(format, LXW_ALIGN_LEFT);
- else if ((*pp)->label) // right align
+ else if ((*pp)->label) // right align
format_set_align(format, LXW_ALIGN_RIGHT);
// handle bold and underline
@@ -448,7 +448,6 @@ int export_xlsx(char * filename, int r0, int c0, int rn, int cn) {
fgcolor = LXW_COLOR_WHITE;
break;
}
- //format_set_fg_color(format, fgcolor);
format_set_font_color(format, fgcolor);
}
@@ -483,17 +482,38 @@ int export_xlsx(char * filename, int r0, int c0, int rn, int cn) {
}
format_set_bg_color(format, bgcolor);
}
+
+ // dateformat
+ if ((*pp) && (*pp)->format && (*pp)->format[0] == 'd') {
+ char sc_format[BUFFERSIZE];
+ char * st = NULL;
+ strcpy(sc_format, &((*pp)->format[1]));
+
+ st = str_replace(sc_format, "%Y", "yyyy");
+ strcpy(sc_format, st);
+ free(st);
+ st = str_replace(sc_format, "%y", "yy");
+ strcpy(sc_format, st);
+ free(st);
+ st = str_replace(sc_format, "%m", "mm");
+ strcpy(sc_format, st);
+ free(st);
+ st = str_replace(sc_format, "%d", "dd");
+ strcpy(sc_format, st);
+ free(st);
+ format_set_num_format(format, sc_format);
+ worksheet_write_number(worksheet, row, col, (((*pp)->v + atoi(get_conf_value("tm_gmtoff"))) / 86400 + 25569) , format);
+ }
+
// If a numeric value exists
- if ( (*pp)->flags & is_valid) {
+ else if ( (*pp)->flags & is_valid) {
worksheet_write_number(worksheet, row, col, (*pp)->v, format);
} else if ((*pp)->label) {
worksheet_write_string(worksheet, row, col, (*pp)->label, format);
}
- /* TODO: handle dates
- handle hidden rows and columns?
- basic expression and formulas?
- */
+ /* TODO: handle basic expression and formulas?
+ handle hidden rows and columns? */
}
return workbook_close(workbook);
}