forked from sheetjs/sheetjs
		
	
		
			
	
	
		
			695 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			695 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var XLSX = require('../.');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var JSZip = require('jszip');
							 | 
						||
| 
								 | 
							
								var fs = require('fs');
							 | 
						||
| 
								 | 
							
								var cheerio = require('cheerio');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var assert = require('assert');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function JSDateToExcelDate(inDate) {
							 | 
						||
| 
								 | 
							
								  return 25569.0 + ((inDate.getTime() - (inDate.getTimezoneOffset() * 60 * 1000)) / (1000 * 60 * 60 * 24));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var defaultCellStyle = { font: { name: "Verdana", sz: 11, color: "FF00FF88"}, fill: {fgColor: {rgb: "FFFFAA00"}}};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// test to see if everything on the left equals its counterpart on the right
							 | 
						||
| 
								 | 
							
								// but the right hand object may have other attributes which we might not care about
							 | 
						||
| 
								 | 
							
								function basicallyEquals(left, right) {
							 | 
						||
| 
								 | 
							
								  if (Array.isArray(left) && Array.isArray(right)) {
							 | 
						||
| 
								 | 
							
								    for (var i=0; i<left.length; i++) {
							 | 
						||
| 
								 | 
							
								      if (!basicallyEquals(left[i], right[i] )) {
							 | 
						||
| 
								 | 
							
								        return false;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  else if (typeof left == 'object' && typeof right == 'object') {
							 | 
						||
| 
								 | 
							
								    for (var key in left) {
							 | 
						||
| 
								 | 
							
								      if (key != 'bgColor') {
							 | 
						||
| 
								 | 
							
								        if (!basicallyEquals(left[key], right[key] )) {
							 | 
						||
| 
								 | 
							
								          if (JSON.stringify(left[key])=="{}" && right[key] == undefined) return true;
							 | 
						||
| 
								 | 
							
								          if (JSON.stringify(right[key])=="{}" && left[key] == undefined) return true;
							 | 
						||
| 
								 | 
							
								          return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  else {
							 | 
						||
| 
								 | 
							
								    if (left != right) {
							 | 
						||
| 
								 | 
							
								      return false;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('styles with blank cells', function () {
							 | 
						||
| 
								 | 
							
								  it ('retains styles with blank cells', function() {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var OUTFILE = '/tmp/ex1.xlsx';
							 | 
						||
| 
								 | 
							
								    var OUTFILE2 = '/tmp/ex1a.xlsx';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    var workbook = {
							 | 
						||
| 
								 | 
							
								      SheetNames : ["Sheet1"],
							 | 
						||
| 
								 | 
							
								      Sheets: {
							 | 
						||
| 
								 | 
							
								        "Sheet1": {
							 | 
						||
| 
								 | 
							
								          "B2": {v: "Top left", s: { border: { top: { style: 'medium', color: { rgb: "FFFFAA00"}}, left: { style: 'medium', color: { rgb: "FFFFAA00"}} }}},
							 | 
						||
| 
								 | 
							
								          "C2": {v: "Top right", s: { border: { top: { style: 'medium', color: { rgb: "FFFFAA00"}}, right: { style: 'medium', color: { rgb: "FFFFAA00"}} }}},
							 | 
						||
| 
								 | 
							
								          "B3": {v: "Bottom left", s: { border: { bottom: { style: 'medium', color: { rgb: "FFFFAA00"}}, left: { style: 'medium', color: { rgb: "FFFFAA00"}} }}},
							 | 
						||
| 
								 | 
							
								          "C3": {v: "", s: { border: { bottom: { style: 'medium', color: { rgb: "FFFFAA00"}}, right: { style: 'medium', color: { rgb: "FFFFAA00"}} }}},
							 | 
						||
| 
								 | 
							
								          "!ref":"B2:C3"
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    // write the file and read it back...
							 | 
						||
| 
								 | 
							
								    XLSX.writeFile(workbook, OUTFILE, {bookType: 'xlsx', bookSST: false});
							 | 
						||
| 
								 | 
							
								    var workbook2 = XLSX.readFile(OUTFILE, {cellStyles: true});
							 | 
						||
| 
								 | 
							
								    assert(basicallyEquals(workbook.Sheets, workbook2.Sheets));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    XLSX.writeFile(workbook2, OUTFILE2, {bookType: 'xlsx', bookSST: false});
							 | 
						||
| 
								 | 
							
								    var workbook3 = XLSX.readFile(OUTFILE2, {cellStyles: true});
							 | 
						||
| 
								 | 
							
								    assert(basicallyEquals(workbook.Sheets, workbook3.Sheets))
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe("Export styles", function () {
							 | 
						||
| 
								 | 
							
								  var workbook, wbout, wbin;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  before(function () {
							 | 
						||
| 
								 | 
							
								    workbook = {
							 | 
						||
| 
								 | 
							
								      "SheetNames": [
							 | 
						||
| 
								 | 
							
								        "Main"
							 | 
						||
| 
								 | 
							
								      ],
							 | 
						||
| 
								 | 
							
								      "Sheets": {
							 | 
						||
| 
								 | 
							
								        "Main": {
							 | 
						||
| 
								 | 
							
								          "!merges": [
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								              "s": {
							 | 
						||
| 
								 | 
							
								                "c": 0,
							 | 
						||
| 
								 | 
							
								                "r": 0
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								              "e": {
							 | 
						||
| 
								 | 
							
								                "c": 2,
							 | 
						||
| 
								 | 
							
								                "r": 0
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          ],
							 | 
						||
| 
								 | 
							
								          "A1": {
							 | 
						||
| 
								 | 
							
								            "v": "This is a submerged cell",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "border": {
							 | 
						||
| 
								 | 
							
								                "left": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "top": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "bottom": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B1": {
							 | 
						||
| 
								 | 
							
								            "v": "Pirate ship",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "border": {
							 | 
						||
| 
								 | 
							
								                "top": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "bottom": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C1": {
							 | 
						||
| 
								 | 
							
								            "v": "Sunken treasure",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "border": {
							 | 
						||
| 
								 | 
							
								                "right": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "top": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "bottom": {
							 | 
						||
| 
								 | 
							
								                  "style": "thick",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A2": {
							 | 
						||
| 
								 | 
							
								            "v": "Blank",
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B2": {
							 | 
						||
| 
								 | 
							
								            "v": "Red",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FFFF0000"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C2": {
							 | 
						||
| 
								 | 
							
								            "v": "Green",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FF00FF00"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "D2": {
							 | 
						||
| 
								 | 
							
								            "v": "Blue",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FF0000FF"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "E2": {
							 | 
						||
| 
								 | 
							
								            "v": "Theme 5",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "theme": 5
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "F2": {
							 | 
						||
| 
								 | 
							
								            "v": "Theme 5 Tint -0.5",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "theme": 5,
							 | 
						||
| 
								 | 
							
								                  "tint": -0.5
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A3": {
							 | 
						||
| 
								 | 
							
								            "v": "Default",
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B3": {
							 | 
						||
| 
								 | 
							
								            "v": "Arial",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "font": {
							 | 
						||
| 
								 | 
							
								                "name": "Arial",
							 | 
						||
| 
								 | 
							
								                "sz": 24,
							 | 
						||
| 
								 | 
							
								                "color": {
							 | 
						||
| 
								 | 
							
								                  "theme": "5"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C3": {
							 | 
						||
| 
								 | 
							
								            "v": "Times New Roman",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "font": {
							 | 
						||
| 
								 | 
							
								                "name": "Times New Roman",
							 | 
						||
| 
								 | 
							
								                bold:true,
							 | 
						||
| 
								 | 
							
								                underline: true,
							 | 
						||
| 
								 | 
							
								                italic: true,
							 | 
						||
| 
								 | 
							
								                strike: true,
							 | 
						||
| 
								 | 
							
								                outline: true,
							 | 
						||
| 
								 | 
							
								                shadow: true,
							 | 
						||
| 
								 | 
							
								                vertAlign: "superscript",
							 | 
						||
| 
								 | 
							
								                "sz": 16,
							 | 
						||
| 
								 | 
							
								                "color": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FF2222FF"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "D3": {
							 | 
						||
| 
								 | 
							
								            "v": "Courier New",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "font": {
							 | 
						||
| 
								 | 
							
								                "name": "Courier New",
							 | 
						||
| 
								 | 
							
								                "sz": 14
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A4": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B4": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C4": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "D4": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.00%"
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "E4": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.00%",
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FFFFCC00"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A5": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0%"
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B5": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.0%"
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C5": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.00%"
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "D5": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.000%"
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "E5": {
							 | 
						||
| 
								 | 
							
								            "v": 0.618033989,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.0000%"
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "F5": {
							 | 
						||
| 
								 | 
							
								            "v": 0,
							 | 
						||
| 
								 | 
							
								            "t": "n",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "0.00%;\\(0.00%\\);\\-;@",
							 | 
						||
| 
								 | 
							
								              "fill": {
							 | 
						||
| 
								 | 
							
								                "fgColor": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FFFFCC00"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A6": {
							 | 
						||
| 
								 | 
							
								            "v": "Sat Mar 21 2015 23:47:34 GMT-0400 (EDT)",
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B6": {
							 | 
						||
| 
								 | 
							
								            "v": 42084.99137416667,
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C6": {
							 | 
						||
| 
								 | 
							
								            "v": 42084.99137416667,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "d-mmm-yy"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A7": {
							 | 
						||
| 
								 | 
							
								            "v": "left",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "horizontal": "left"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B7": {
							 | 
						||
| 
								 | 
							
								            "v": "center",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "horizontal": "center"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C7": {
							 | 
						||
| 
								 | 
							
								            "v": "right",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "horizontal": "right"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A8": {
							 | 
						||
| 
								 | 
							
								            "v": "vertical",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "vertical": "top"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B8": {
							 | 
						||
| 
								 | 
							
								            "v": "vertical",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "vertical": "center"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C8": {
							 | 
						||
| 
								 | 
							
								            "v": "vertical",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "vertical": "bottom"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A9": {
							 | 
						||
| 
								 | 
							
								            "v": "indent",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "indent": "1"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B9": {
							 | 
						||
| 
								 | 
							
								            "v": "indent",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "indent": "2"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C9": {
							 | 
						||
| 
								 | 
							
								            "v": "indent",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "indent": "3"
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A10": {
							 | 
						||
| 
								 | 
							
								            "v": "In publishing and graphic design, lorem ipsum is a filler text commonly used to demonstrate the graphic elements of a document or visual presentation. ",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "wrapText": 1,
							 | 
						||
| 
								 | 
							
								                "horizontal": "right",
							 | 
						||
| 
								 | 
							
								                "vertical": "center",
							 | 
						||
| 
								 | 
							
								                "indent": 1
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A11": {
							 | 
						||
| 
								 | 
							
								            "v": 41684.35264774306,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "m/d/yy"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B11": {
							 | 
						||
| 
								 | 
							
								            "v": 41684.35264774306,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "d-mmm-yy"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C11": {
							 | 
						||
| 
								 | 
							
								            "v": 41684.35264774306,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "h:mm:ss AM/PM"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "D11": {
							 | 
						||
| 
								 | 
							
								            "v": 42084.99137416667,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "m/d/yy"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "E11": {
							 | 
						||
| 
								 | 
							
								            "v": 42065.02247239584,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "m/d/yy"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "F11": {
							 | 
						||
| 
								 | 
							
								            "v": 42084.99137416667,
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "numFmt": "m/d/yy h:mm:ss AM/PM"
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "n"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A12": {
							 | 
						||
| 
								 | 
							
								            "v": "Apple",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "border": {
							 | 
						||
| 
								 | 
							
								                "top": {
							 | 
						||
| 
								 | 
							
								                  "style": "thin"
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "left": {
							 | 
						||
| 
								 | 
							
								                  "style": "thin"
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "right": {
							 | 
						||
| 
								 | 
							
								                  "style": "thin"
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "bottom": {
							 | 
						||
| 
								 | 
							
								                  "style": "thin"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C12": {
							 | 
						||
| 
								 | 
							
								            "v": "Apple",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "border": {
							 | 
						||
| 
								 | 
							
								                "diagonalUp": 1,
							 | 
						||
| 
								 | 
							
								                "diagonalDown": 1,
							 | 
						||
| 
								 | 
							
								                "top": {
							 | 
						||
| 
								 | 
							
								                  "style": "dashed",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "right": {
							 | 
						||
| 
								 | 
							
								                  "style": "medium",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "theme": "5"
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "bottom": {
							 | 
						||
| 
								 | 
							
								                  "style": "hair",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "theme": 5,
							 | 
						||
| 
								 | 
							
								                    "tint": "-0.3"
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "left": {
							 | 
						||
| 
								 | 
							
								                  "style": "thin",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "rgb": "FFFFAA00"
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "diagonal": {
							 | 
						||
| 
								 | 
							
								                  "style": "dotted",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "E12": {
							 | 
						||
| 
								 | 
							
								            "v": "Pear",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "border": {
							 | 
						||
| 
								 | 
							
								                "diagonalUp": 1,
							 | 
						||
| 
								 | 
							
								                "diagonalDown": 1,
							 | 
						||
| 
								 | 
							
								                "top": {
							 | 
						||
| 
								 | 
							
								                  "style": "dashed",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "right": {
							 | 
						||
| 
								 | 
							
								                  "style": "dotted",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "theme": "5"
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "bottom": {
							 | 
						||
| 
								 | 
							
								                  "style": "mediumDashed",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "theme": 5,
							 | 
						||
| 
								 | 
							
								                    "tint": "-0.3"
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "left": {
							 | 
						||
| 
								 | 
							
								                  "style": "double",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "rgb": "FFFFAA00"
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								                "diagonal": {
							 | 
						||
| 
								 | 
							
								                  "style": "hair",
							 | 
						||
| 
								 | 
							
								                  "color": {
							 | 
						||
| 
								 | 
							
								                    "auto": 1
							 | 
						||
| 
								 | 
							
								                  }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A13": {
							 | 
						||
| 
								 | 
							
								            "v": "Up 90",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "textRotation": 90
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "B13": {
							 | 
						||
| 
								 | 
							
								            "v": "Up 45",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "textRotation": 45
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "C13": {
							 | 
						||
| 
								 | 
							
								            "v": "Horizontal",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "textRotation": 0
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "D13": {
							 | 
						||
| 
								 | 
							
								            "v": "Down 45",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "textRotation": 135
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "E13": {
							 | 
						||
| 
								 | 
							
								            "v": "Down 90",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "textRotation": 180
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "F13": {
							 | 
						||
| 
								 | 
							
								            "v": "Vertical",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "alignment": {
							 | 
						||
| 
								 | 
							
								                "textRotation": 255
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "A14": {
							 | 
						||
| 
								 | 
							
								            "v": "Font color test",
							 | 
						||
| 
								 | 
							
								            "s": {
							 | 
						||
| 
								 | 
							
								              "font": {
							 | 
						||
| 
								 | 
							
								                "color": {
							 | 
						||
| 
								 | 
							
								                  "rgb": "FFC6EFCE"
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            "t": "s"
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          "!ref": "A1:F14"
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('can write to a file and read the file back', function () {
							 | 
						||
| 
								 | 
							
								    XLSX.writeFile(workbook, '/tmp/wb.xlsx',  { defaultCellStyle: defaultCellStyle });
							 | 
						||
| 
								 | 
							
								    var wb1 = XLSX.readFile('/tmp/wb.xlsx', {type: "xlsx", cellStyles: true, cellNF: true, WTF:true});
							 | 
						||
| 
								 | 
							
								    assert(basicallyEquals(workbook.Sheets.Main,wb1.Sheets.Main));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  it('can write to a buffer and read the file back', function () {
							 | 
						||
| 
								 | 
							
								    var wb2 = XLSX.read(XLSX.write(workbook, {type:"buffer", bookType: 'xlsx'}), {cellStyles: true, cellNF: true})
							 | 
						||
| 
								 | 
							
								    XLSX.writeFile(wb2, '/tmp/wb2.xlsx',  { defaultCellStyle: defaultCellStyle });
							 | 
						||
| 
								 | 
							
								    assert(basicallyEquals(workbook.Sheets.Main,wb2.Sheets.Main));
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								
							 |