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 += ""; } @@ -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 += ""; } @@ -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] = "";