From 766d6cd3a3ac6ae3ff93fe9658bf05efa1ef7374 Mon Sep 17 00:00:00 2001 From: ChrisSG Date: Tue, 14 Jul 2015 12:11:46 +0200 Subject: [PATCH 1/2] Update xlsx.js --- dist/xlsx.js | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/dist/xlsx.js b/dist/xlsx.js index c29f5ceae..ee771ce13 100644 --- a/dist/xlsx.js +++ b/dist/xlsx.js @@ -7209,10 +7209,31 @@ var _ssfopts = {}; // spreadsheet formatting options RELS.WS = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"; -function get_sst_id(sst, str) { - for(var i = 0, len = sst.length; i < len; ++i) if(sst[i].t === str) { sst.Count ++; return i; } - sst[len] = {t:str}; sst.Count ++; sst.Unique ++; return len; -} +function get_sst_id(sst, cell) { + var i, len; + i = 0; + len = sst.length; + while (i < len) { + if (sst[i].t === cell.v) { + sst.Count++; + return i; + } + ++i; + } + if (cell.r && cell.r !== '') { + sst[len] = { + t: cell.v, + r: cell.r + }; + } else { + sst[len] = { + t: cell.v + }; + } + sst.Count++; + sst.Unique++; + return len; +}; function get_cell_style(styles, cell, opts) { var z = opts.revssf[cell.z != null ? cell.z : "General"]; From 86889709c863d4e14550e164892f287eb98e92cc Mon Sep 17 00:00:00 2001 From: ChrisSG Date: Tue, 14 Jul 2015 15:21:41 +0200 Subject: [PATCH 2/2] Update for call to get_sst_id with cell as argument Update needed for raw rich-text formatting --- dist/xlsx.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/xlsx.js b/dist/xlsx.js index ee771ce13..f62d9caea 100644 --- a/dist/xlsx.js +++ b/dist/xlsx.js @@ -7437,7 +7437,7 @@ function write_ws_xml_cell(cell, ref, ws, opts, idx, wb) { case 'e': o.t = "e"; break; default: if(opts.bookSST) { - v = writetag('v', ''+get_sst_id(opts.Strings, cell.v)); + v = writetag('v', ''+get_sst_id(opts.Strings, cell)); o.t = "s"; break; } o.t = "str"; break; @@ -7949,7 +7949,7 @@ function write_ws_bin_cell(ba, cell, R, C, opts) { switch(cell.t) { case 's': case 'str': if(opts.bookSST) { - vv = get_sst_id(opts.Strings, cell.v); + vv = get_sst_id(opts.Strings, cell); o.t = "s"; break; } o.t = "str"; break;