diff --git a/bits/66_wscommon.js b/bits/66_wscommon.js index 980297f..d58e7ab 100644 --- a/bits/66_wscommon.js +++ b/bits/66_wscommon.js @@ -56,7 +56,7 @@ function get_cell_style_csf(cellXf) { } - return s; + return JSON.parse(JSON.stringify(s)); } return null; } diff --git a/package.json b/package.json index 0947ced..aebf7d4 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "commander":"" }, "devDependencies": { + "cheerio":"^0.19.0", "mocha":"", "xlsjs":"", "uglify-js":"" diff --git a/tests/test-style.js b/tests/test-style.js index bb62103..bc7a4a2 100644 --- a/tests/test-style.js +++ b/tests/test-style.js @@ -690,5 +690,26 @@ describe("Export styles", function () { assert(basicallyEquals(workbook.Sheets.Main,wb2.Sheets.Main)); }); + it('should edit style of one cell without applie modification on other cell', function () { + var wb2 = XLSX.read(XLSX.write(workbook, {type:"buffer", bookType: 'xlsx'}), {cellStyles: true, cellNF: true}) + + var A6s = wb2.Sheets.Main.A6.s; + var B6s = wb2.Sheets.Main.B6.s; + + Object.keys(A6s).forEach(function(key) { + if(A6s[key]) + assert(A6s[key] !== B6s[key]); + }); + + assert(A6s.border.top === undefined); + assert(B6s.border.top === undefined); + + A6s.border.top = {}; + assert(B6s.border.top === undefined); + + XLSX.writeFile(wb2, '/tmp/wb2.xlsx', { defaultCellStyle: defaultCellStyle }); + assert(basicallyEquals(workbook.Sheets.Main,wb2.Sheets.Main)); + }); + }); diff --git a/xlsx.js b/xlsx.js index 054cb67..b0ff1eb 100644 --- a/xlsx.js +++ b/xlsx.js @@ -7497,7 +7497,7 @@ function get_cell_style_csf(cellXf) { } - return s; + return JSON.parse(JSON.stringify(s)); } return null; }