diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..fb7a5cb
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,6 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Issues and Questions
+ url: https://git.sheetjs.com/sheetjs/sheetjs/issues
+ about: Please report issues to the official code repository.
+
diff --git a/xlsx.mini.flow.js b/xlsx.mini.flow.js
index e9eb845..d5e06ef 100644
--- a/xlsx.mini.flow.js
+++ b/xlsx.mini.flow.js
@@ -5829,7 +5829,7 @@ function sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) {
var cp = +dbf_reverse_map[/*::String(*/current_codepage/*::)*/] || 0x03;
h.write_shift(4, 0x00000000 | (cp<<8));
if(dbf_codepage_map[cp] != +o.codepage) {
- console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
+ if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
current_codepage = 1252;
}
@@ -6096,7 +6096,7 @@ var SYLK = /*#__PURE__*/(function() {
case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
case 'e': o += cell.w || cell.v; break;
case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
- case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
+ case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
}
return o;
}
@@ -6817,6 +6817,7 @@ function write_sst_xml(sst/*:SST*/, opts)/*:string*/ {
else {
sitag += "" + escapexml(s.t) + "";
}
@@ -8639,7 +8640,10 @@ function write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string
var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null;
v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : "");
}
- if(cell.l) ws['!links'].push([ref, cell.l]);
+ if(cell.l) {
+ cell.l.display = escapexml(vv);
+ ws['!links'].push([ref, cell.l]);
+ }
if(cell.D) o.cm = 1;
return writextag('c', v, o);
}
@@ -8949,6 +8953,7 @@ function write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ {
}
if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));
if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);
+ rel.display = l[1].display;
o[o.length] = writextag("hyperlink",null,rel);
});
o[o.length] = "";
diff --git a/xlsx.mini.js b/xlsx.mini.js
index d788e24..55162b2 100644
--- a/xlsx.mini.js
+++ b/xlsx.mini.js
@@ -5743,7 +5743,7 @@ function sheet_to_dbf(ws, opts) {
var cp = +dbf_reverse_map[current_codepage] || 0x03;
h.write_shift(4, 0x00000000 | (cp<<8));
if(dbf_codepage_map[cp] != +o.codepage) {
- console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
+ if(o.codepage) console.error("DBF Unsupported codepage " + current_codepage + ", using 1252");
current_codepage = 1252;
}
@@ -6010,7 +6010,7 @@ var SYLK = (function() {
case 'b': o += cell.v ? "TRUE" : "FALSE"; break;
case 'e': o += cell.w || cell.v; break;
case 'd': o += '"' + (cell.w || cell.v) + '"'; break;
- case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
+ case 's': o += '"' + (cell.v == null ? "" : String(cell.v)).replace(/"/g,"").replace(/;/g, ";;") + '"'; break;
}
return o;
}
@@ -6731,6 +6731,7 @@ function write_sst_xml(sst, opts) {
else {
sitag += "" + escapexml(s.t) + "";
}
@@ -8553,7 +8554,10 @@ function write_ws_xml_cell(cell, ref, ws, opts) {
var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null;
v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : "");
}
- if(cell.l) ws['!links'].push([ref, cell.l]);
+ if(cell.l) {
+ cell.l.display = escapexml(vv);
+ ws['!links'].push([ref, cell.l]);
+ }
if(cell.D) o.cm = 1;
return writextag('c', v, o);
}
@@ -8863,6 +8867,7 @@ ws['!links'].forEach(function(l) {
}
if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1));
if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip);
+ rel.display = l[1].display;
o[o.length] = writextag("hyperlink",null,rel);
});
o[o.length] = "";