diff --git a/js/buttons.html5.js b/js/buttons.html5.js
index c102b745..79cbc5d5 100644
--- a/js/buttons.html5.js
+++ b/js/buttons.html5.js
@@ -771,6 +771,7 @@ var excelStrings = {
// Ref: section 3.8.30 - built in formatters in open spreadsheet
// https://www.ecma-international.org/news/TC45_current_work/Office%20Open%20XML%20Part%204%20-%20Markup%20Language%20Reference.pdf
var _excelSpecials = [
+ { match: /^=HYPERLINK\(.+\)$/, style: 4, nodeName: 'f', replace: /^=/ }, // Hyperlink
{ match: /^\-?\d+\.\d%$/, style: 60, fmt: function (d) { return d/100; } }, // Precent with d.p.
{ match: /^\-?\d+\.?\d*%$/, style: 56, fmt: function (d) { return d/100; } }, // Percent
{ match: /^\-?\$[\d,]+.?\d*$/, style: 57 }, // Dollars
@@ -1071,7 +1072,7 @@ DataTable.ext.buttons.excelHtml5 = {
// if they are returning a string, since at the moment it is
// assumed to be a number
if ( row[i].match && ! row[i].match(/^0\d+/) && row[i].match( special.match ) ) {
- var val = row[i].replace(/[^\d\.\-]/g, '');
+ var val = row[i].replace(special.replace || /[^\d\.\-]/g, '');
if ( special.fmt ) {
val = special.fmt( val );
@@ -1083,7 +1084,7 @@ DataTable.ext.buttons.excelHtml5 = {
s: special.style
},
children: [
- _createNode( rels, 'v', { text: val } )
+ _createNode( rels, special.nodeName || 'v', { text: val } )
]
} );