| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418 |
- import ExcelJS from 'exceljs'
- import FileSaver from 'file-saver'
- const exportExcel = function(luckysheet,name) { // 参数为luckysheet.getluckysheetfile()获取的对象
- // 1.创建工作簿,可以为工作簿添加属性
- const workbook = new ExcelJS.Workbook();
- // 2.创建表格,第二个参数可以配置创建什么样的工作表
- // 2.创建表格,第二个参数可以配置创建什么样的工作表
- if (Object.prototype.toString.call(luckysheet) === '[object Object]') {
- luckysheet = [luckysheet]
- }
- console.log(luckysheet)
- //var tableArr=luckysheet.getAllSheets();
- luckysheet.forEach(function(table) {
- if (table.data.length === 0) return true
- // ws.getCell('B2').fill = fills.
- const worksheet = workbook.addWorksheet(table.name)
- setStyleAndValue(table.data, worksheet);
- setMerge(table.config.merge, worksheet);
- setBorder(table, worksheet);
- setImages(table, worksheet, workbook);
- return true
- })
- // return
- // 4.写入 buffer
- const buffer = workbook.xlsx.writeBuffer().then(data => {
- // console.log('data', data)
- const blob = new Blob([data], {
- type: 'application/vnd.ms-excel;charset=utf-8'
- })
- console.log("导出成功!")
- saveFile(blob, name)
- })
- }
- var saveFile = function(buf,name) {
- let blob = new Blob([buf], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8' });
- const downloadElement = document.createElement('a');
- let href = window.URL.createObjectURL(blob);
- downloadElement.href = href;
- downloadElement.download = name+".xlsx"; // 文件名字
- document.body.appendChild(downloadElement);
- downloadElement.click();
- document.body.removeChild(downloadElement); // 下载完成移除元素
- window.URL.revokeObjectURL(href); // 释放掉blob对象
- }
- var setMerge = function (luckyMerge = {}, worksheet) {
- const mergearr = Object.values(luckyMerge);
- mergearr.forEach(function (elem) { // elem格式:{r: 0, c: 0, rs: 1, cs: 2}
- // 按开始行,开始列,结束行,结束列合并(相当于 K10:M12)
- worksheet.mergeCells(elem.r + 1, elem.c + 1, elem.r + elem.rs, elem.c + elem.cs);
- });
- }
- //获取图片在单元格的位置
- var getImagePosition =function(num,arr){
- let index = 0;
- let minIndex;
- let maxIndex;
- for (let i = 0; i < arr.length; i++) {
- if (num < arr[i]) {
- index = i;
- break;
- }
- }
- if(index==0){
- minIndex = 0;
- maxIndex = 1;
- }
- else if(index == arr.length-1){
- minIndex = arr.length-2;
- maxIndex = arr.length-1;
- }
- else{
- minIndex = index-1;
- maxIndex = index;
- }
- let min = arr[minIndex];
- let max = arr[maxIndex];
- let radio = Math.abs((num-min)/(max-min))+index
- return radio;
- }
- var setImages = function (table, worksheet, workbook) {
- let {
- images,
- visibledatacolumn,//所有行的位置
- visibledatarow //所有列的位置
- } = {...table}
- if (typeof images != 'object') return;
- for (let key in images) {
- // 通过 base64 将图像添加到工作簿
- const myBase64Image = images[key].src;
- //开始行 开始列 结束行 结束列
- const item = images[key];
- const imageId = workbook.addImage({
- base64: myBase64Image,
- extension: 'png'
- });
- const col_st = getImagePosition(item.default.left,visibledatacolumn);
- const row_st = getImagePosition(item.default.top,visibledatarow);
- //模式1,图片左侧与luckysheet位置一样,像素比例保持不变,但是,右侧位置可能与原图所在单元格不一致
- worksheet.addImage(imageId, {
- tl: { col: col_st, row: row_st},
- ext: { width: item.default.width, height: item.default.height },
- });
- //模式2,图片四个角位置没有变动,但是图片像素比例可能和原图不一样
- // const w_ed = item.default.left+item.default.width;
- // const h_ed = item.default.top+item.default.height;
- // const col_ed = getImagePosition(w_ed,visibledatacolumn);
- // const row_ed = getImagePosition(h_ed,visibledatarow);
- // worksheet.addImage(imageId, {
- // tl: { col: col_st, row: row_st},
- // br: { col: col_ed, row: row_ed},
- // });
- }
- };
- var setBorder = function (lucksheetfile, worksheet) {
- if (!lucksheetfile) return;
- const luckyToExcel = {
- style: {
- 0: 'none',
- 1: 'thin',
- 2: 'hair',
- 3: 'dotted',
- 4: 'dashDot', // 'Dashed',
- 5: 'dashDot',
- 6: 'dashDotDot',
- 7: 'double',
- 8: 'medium',
- 9: 'mediumDashed',
- 10: 'mediumDashDot',
- 11: 'mediumDashDotDot',
- 12: 'slantDashDot',
- 13: 'thick'
- }
- }
- //获取所有的单元格边框的信息
- const borderInfoCompute = getBorderInfo(lucksheetfile);
- for (let x in borderInfoCompute) {
- let border = {};
- let info = borderInfoCompute[x];
- let row = parseInt(x.substr(0, x.indexOf('_')));
- let column = parseInt(x.substr(x.indexOf('_') + 1));
- if(info.t!=undefined){
- const tcolor = info.t.color.indexOf('rgb')>-1 ?rgb2hex(info.t.color):info.t.color;
- border['top'] = {style:luckyToExcel.style[info.t.style],color: {argb: tcolor.replace('#', '')}};
- }
- if(info.r!=undefined){
- const rcolor = info.r.color.indexOf('rgb')>-1 ?rgb2hex(info.r.color):info.r.color;
- border['right'] = {style:luckyToExcel.style[info.r.style],color: {argb: rcolor.replace('#', '')}};
- }
- if(info.b!=undefined){
- const bcolor = info.b.color.indexOf('rgb')>-1 ?rgb2hex(info.b.color):info.b.color;
- border['bottom'] = {style:luckyToExcel.style[info.b.style],color: {argb: bcolor.replace('#', '')}};
- }
- if(info.l!=undefined){
- const lcolor = info.l.color.indexOf('rgb')>-1 ?rgb2hex(info.l.color):info.l.color;
- border['left'] = {style:luckyToExcel.style[info.l.style],color: {argb: lcolor.replace('#', '')}};
- }
- worksheet.getCell(row + 1, column + 1).border = border;
- }
- }
- var getBorderInfo=function(luckysheetfile){
- let borderInfoCompute = {};
- let cfg = luckysheetfile.config;
- let data = luckysheetfile.data;
- let borderInfo = cfg["borderInfo"];
- //设置需要计算边框的区域
- let dataset_row_st = 0,dataset_row_ed = data.length,dataset_col_st=0,dataset_col_ed=data[0].length;
- if(borderInfo != null && borderInfo.length > 0){
- for(let i = 0; i < borderInfo.length; i++){
- let rangeType = borderInfo[i].rangeType;
- if(rangeType == "range"){
- let borderType = borderInfo[i].borderType;
- let borderColor = borderInfo[i].color;
- let borderStyle = borderInfo[i].style;
- let borderRange = borderInfo[i].range;
- for(let j = 0; j < borderRange.length; j++){
- let bd_r1 = borderRange[j].row[0], bd_r2 = borderRange[j].row[1];
- let bd_c1 = borderRange[j].column[0], bd_c2 = borderRange[j].column[1];
- if(bd_r1<dataset_row_st){
- bd_r1 = dataset_row_st;
- }
- if(bd_r2>dataset_row_ed){
- bd_r2 = dataset_row_ed;
- }
- if(bd_c1<dataset_col_st){
- bd_c1 = dataset_col_st;
- }
- if(bd_c2>dataset_col_ed){
- bd_c2 = dataset_col_ed;
- }
- if(borderType == "border-left"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- if(borderInfoCompute[bd_r + "_" + bd_c1] == null){
- borderInfoCompute[bd_r + "_" + bd_c1] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c1].l = { "color": borderColor, "style": borderStyle };
- let bd_c_left = bd_c1 - 1;
- if(bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null){
- let cell_left = data[bd_r][bd_c_left];
- let mc = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
- if(mc.c + mc.cs - 1 == bd_c_left){
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": borderColor, "style": borderStyle };
- }
- }
- let mc = cfg["merge"] || {};
- for (const key in mc) {
- let {c,r,cs,rs} = mc[key];
- if(bd_c1 <= c + cs - 1 && bd_c1 > c && bd_r >= r && bd_r <= r + rs -1){
- borderInfoCompute[bd_r + "_" + bd_c1].l = null;
- }
- }
- }
- }
- else if(borderType == "border-right"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- if(borderInfoCompute[bd_r + "_" + bd_c2] == null){
- borderInfoCompute[bd_r + "_" + bd_c2] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c2].r = { "color": borderColor, "style": borderStyle };
- let bd_c_right = bd_c2 + 1;
- if(bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null){
- let cell_right = data[bd_r][bd_c_right];
- let mc = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
- if(mc.c == bd_c_right){
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": borderColor, "style": borderStyle };
- }
- }
- let mc = cfg["merge"] || {};
- for (const key in mc) {
- let {c,r,cs,rs} = mc[key];
- if(bd_c2 < c + cs - 1 && bd_c2 >= c && bd_r >= r && bd_r <= r + rs -1){
- borderInfoCompute[bd_r + "_" + bd_c2].r = null;
- }
- }
- }
- }
- else if(borderType == "border-top"){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r1] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(borderInfoCompute[bd_r1 + "_" + bd_c] == null){
- borderInfoCompute[bd_r1 + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r1 + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- let bd_r_top = bd_r1 - 1;
- if(bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]){
- if(data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null){
- let cell_top = data[bd_r_top][bd_c];
- let mc = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
- if(mc.r + mc.rs - 1 == bd_r_top){
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- let mc = cfg["merge"] || {};
- for (const key in mc) {
- let {c,r,cs,rs} = mc[key];
- if(bd_r1 <= r + rs - 1 && bd_r1 > r && bd_c >= c && bd_c <= c + cs -1){
- borderInfoCompute[bd_r1 + "_" + bd_c].t = null;
- }
- }
- }
- }
- else if(borderType == "border-bottom"){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r2] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(borderInfoCompute[bd_r2 + "_" + bd_c] == null){
- borderInfoCompute[bd_r2 + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r2 + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- let bd_r_bottom = bd_r2 + 1;
- if(bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]){
- if(data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null){
- let cell_bottom = data[bd_r_bottom][bd_c];
- let mc = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
- if(mc.r == bd_r_bottom){
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- let mc = cfg["merge"] || {};
- for (const key in mc) {
- let {c,r,cs,rs} = mc[key];
- if(bd_r2 < r + rs - 1 && bd_r2 >= r && bd_c >= c && bd_c <= c + cs -1){
- borderInfoCompute[bd_r2 + "_" + bd_c].b = null;
- }
- }
- }
- }
- else if(borderType == "border-all"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc==undefined || mc==null){
- continue
- };
- if(mc.r == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- if(mc.r + mc.rs - 1 == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- if(mc.c == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- }
- if(mc.c + mc.cs - 1 == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- if(bd_r == bd_r1){
- let bd_r_top = bd_r1 - 1;
- if(bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]){
- if(data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null){
- let cell_top = data[bd_r_top][bd_c];
- let mc = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
- if(mc.r + mc.rs - 1 == bd_r_top){
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- if(bd_r == bd_r2){
- let bd_r_bottom = bd_r2 + 1;
- if(bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]){
- if(data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null){
- let cell_bottom = data[bd_r_bottom][bd_c];
- let mc = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
- if(mc.r == bd_r_bottom){
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- if(bd_c == bd_c1){
- let bd_c_left = bd_c1 - 1;
- if(bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null){
- let cell_left = data[bd_r][bd_c_left];
- let mc = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
- if(mc.c + mc.cs - 1 == bd_c_left){
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- if(bd_c == bd_c2){
- let bd_c_right = bd_c2 + 1;
- if(bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null){
- let cell_right = data[bd_r][bd_c_right];
- let mc = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
- if(mc.c == bd_c_right){
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- }
- }
- }
- else if(borderType == "border-outside"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(!(bd_r == bd_r1 || bd_r == bd_r2 || bd_c == bd_c1 || bd_c == bd_c2)){
- continue;
- }
- if(bd_r == bd_r1){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- let bd_r_top = bd_r1 - 1;
- if(bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]){
- if(data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null){
- let cell_top = data[bd_r_top][bd_c];
- let mc = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
- if(mc.r + mc.rs - 1 == bd_r_top){
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- if(bd_r == bd_r2){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- let bd_r_bottom = bd_r2 + 1;
- if(bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]){
- if(data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null){
- let cell_bottom = data[bd_r_bottom][bd_c];
- let mc = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
- if(mc.r == bd_r_bottom){
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- if(bd_c == bd_c1){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- let bd_c_left = bd_c1 - 1;
- if(bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null){
- let cell_left = data[bd_r][bd_c_left];
- let mc = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
- if(mc.c + mc.cs - 1 == bd_c_left){
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- if(bd_c == bd_c2){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- let bd_c_right = bd_c2 + 1;
- if(bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null){
- let cell_right = data[bd_r][bd_c_right];
- let mc = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
- if(mc.c == bd_c_right){
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- }
- }
- }
- else if(borderType == "border-inside"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(bd_r == bd_r1 && bd_c == bd_c1){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_r == bd_r2 && bd_c == bd_c1){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_r == bd_r1 && bd_c == bd_c2){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_r == bd_r2 && bd_c == bd_c2){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_r == bd_r1){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc.c == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.c + mc.cs - 1 == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_r == bd_r2){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc.c == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.c + mc.cs - 1 == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_c == bd_c1){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc.r == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.r + mc.rs - 1 == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_c == bd_c2){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc.r == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.r + mc.rs - 1 == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc.r == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.r + mc.rs - 1 == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- if(mc.c == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.c + mc.cs - 1 == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- }
- }
- else if(borderType == "border-horizontal"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(bd_r == bd_r1){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_r == bd_r2){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c];
- if(mc.r == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.r + mc.rs - 1 == bd_r){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- }
- }
- else if(borderType == "border-vertical"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(bd_c == bd_c1){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else if(bd_c == bd_c2){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c] || {};
- if(mc.c == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- }
- else if(mc.c + mc.cs - 1 == bd_c){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- else{
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": borderColor, "style": borderStyle };
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": borderColor, "style": borderStyle };
- }
- }
- }
- }
- }
- else if(borderType == "border-none"){
- for(let bd_r = bd_r1; bd_r <= bd_r2; bd_r++){
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- for(let bd_c = bd_c1; bd_c <= bd_c2; bd_c++){
- if(borderInfoCompute[bd_r + "_" + bd_c] != null){
- delete borderInfoCompute[bd_r + "_" + bd_c];
- }
- if(bd_r == bd_r1){
- let bd_r_top = bd_r1 - 1;
- if(bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]){
- delete borderInfoCompute[bd_r_top + "_" + bd_c].b;
- }
- }
- if(bd_r == bd_r2){
- let bd_r_bottom = bd_r2 + 1;
- if(bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]){
- delete borderInfoCompute[bd_r_bottom + "_" + bd_c].t;
- }
- }
- if(bd_c == bd_c1){
- let bd_c_left = bd_c1 - 1;
- if(bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]){
- delete borderInfoCompute[bd_r + "_" + bd_c_left].r;
- }
- }
- if(bd_c == bd_c2){
- let bd_c_right = bd_c2 + 1;
- if(bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]){
- delete borderInfoCompute[bd_r + "_" + bd_c_right].l;
- }
- }
- }
- }
- }
- }
- }
- else if(rangeType == "cell"){
- let value = borderInfo[i].value;
- let bd_r = value.row_index, bd_c = value.col_index;
- if(bd_r < dataset_row_st || bd_r > dataset_row_ed || bd_c < dataset_col_st || bd_c > dataset_col_ed){
- continue;
- }
- if (cfg["rowhidden"] != null && cfg["rowhidden"][bd_r] != null) {
- continue;
- }
- if(value.l != null || value.r != null || value.t != null || value.b != null){
- if(borderInfoCompute[bd_r + "_" + bd_c] == null){
- borderInfoCompute[bd_r + "_" + bd_c] = {};
- }
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c]) == "object" && data[bd_r][bd_c].mc != null){
- let cell = data[bd_r][bd_c];
- let mc = cfg["merge"][cell.mc.r + "_" + cell.mc.c] || {};
- if(value.l != null && bd_c == mc.c){ //左边框
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": value.l.color, "style": value.l.style };
- let bd_c_left = bd_c - 1;
- if(bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null){
- let cell_left = data[bd_r][bd_c_left];
- let mc_l = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
- if(mc_l.c + mc_l.cs - 1 == bd_c_left){
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": value.l.color, "style": value.l.style };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": value.l.color, "style": value.l.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].l = null;
- }
- if(value.r != null && bd_c == mc.c + mc.cs - 1){ //右边框
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": value.r.color, "style": value.r.style };
- let bd_c_right = bd_c + 1;
- if(bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null){
- let cell_right = data[bd_r][bd_c_right];
- let mc_r = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
- if(mc_r.c == bd_c_right){
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": value.r.color, "style": value.r.style };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": value.r.color, "style": value.r.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].r = null;
- }
- if(value.t != null && bd_r == mc.r){ //上边框
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": value.t.color, "style": value.t.style };
- let bd_r_top = bd_r - 1;
- if(bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]){
- if(data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null){
- let cell_top = data[bd_r_top][bd_c];
- let mc_t = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
- if(mc_t.r + mc_t.rs - 1 == bd_r_top){
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": value.t.color, "style": value.t.style };
- }
- }
- else{
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": value.t.color, "style": value.t.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].t = null;
- }
- if(value.b != null && bd_r == mc.r + mc.rs - 1){ //下边框
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": value.b.color, "style": value.b.style };
- let bd_r_bottom = bd_r + 1;
- if(bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]){
- if(data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null){
- let cell_bottom = data[bd_r_bottom][bd_c];
- let mc_b = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
- if(mc_b.r == bd_r_bottom){
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": value.b.color, "style": value.b.style };
- }
- }
- else{
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": value.b.color, "style": value.b.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].b = null;
- }
- }
- else{
- if(value.l != null){ //左边框
- borderInfoCompute[bd_r + "_" + bd_c].l = { "color": value.l.color, "style": value.l.style };
- let bd_c_left = bd_c - 1;
- if(bd_c_left >= 0 && borderInfoCompute[bd_r + "_" + bd_c_left]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_left]) == "object" && data[bd_r][bd_c_left].mc != null){
- let cell_left = data[bd_r][bd_c_left];
- let mc_l = cfg["merge"][cell_left.mc.r + "_" + cell_left.mc.c];
- if(mc_l.c + mc_l.cs - 1 == bd_c_left){
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": value.l.color, "style": value.l.style };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_left].r = { "color": value.l.color, "style": value.l.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].l = null;
- }
- if(value.r != null){ //右边框
- borderInfoCompute[bd_r + "_" + bd_c].r = { "color": value.r.color, "style": value.r.style };
- let bd_c_right = bd_c + 1;
- if(bd_c_right < data[0].length && borderInfoCompute[bd_r + "_" + bd_c_right]){
- if(data[bd_r] != null && getObjType(data[bd_r][bd_c_right]) == "object" && data[bd_r][bd_c_right].mc != null){
- let cell_right = data[bd_r][bd_c_right];
- let mc_r = cfg["merge"][cell_right.mc.r + "_" + cell_right.mc.c];
- if(mc_r.c == bd_c_right){
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": value.r.color, "style": value.r.style };
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c_right].l = { "color": value.r.color, "style": value.r.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].r = null;
- }
- if(value.t != null){ //上边框
- borderInfoCompute[bd_r + "_" + bd_c].t = { "color": value.t.color, "style": value.t.style };
- let bd_r_top = bd_r - 1;
- if(bd_r_top >= 0 && borderInfoCompute[bd_r_top + "_" + bd_c]){
- if(data[bd_r_top] != null && getObjType(data[bd_r_top][bd_c]) == "object" && data[bd_r_top][bd_c].mc != null){
- let cell_top = data[bd_r_top][bd_c];
- let mc_t = cfg["merge"][cell_top.mc.r + "_" + cell_top.mc.c];
- if(mc_t.r + mc_t.rs - 1 == bd_r_top){
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": value.t.color, "style": value.t.style };
- }
- }
- else{
- borderInfoCompute[bd_r_top + "_" + bd_c].b = { "color": value.t.color, "style": value.t.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].t = null;
- }
- if(value.b != null){ //下边框
- borderInfoCompute[bd_r + "_" + bd_c].b = { "color": value.b.color, "style": value.b.style };
- let bd_r_bottom = bd_r + 1;
- if(bd_r_bottom < data.length && borderInfoCompute[bd_r_bottom + "_" + bd_c]){
- if(data[bd_r_bottom] != null && getObjType(data[bd_r_bottom][bd_c]) == "object" && data[bd_r_bottom][bd_c].mc != null){
- let cell_bottom = data[bd_r_bottom][bd_c];
- let mc_b = cfg["merge"][cell_bottom.mc.r + "_" + cell_bottom.mc.c];
- if(mc_b.r == bd_r_bottom){
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": value.b.color, "style": value.b.style };
- }
- }
- else{
- borderInfoCompute[bd_r_bottom + "_" + bd_c].t = { "color": value.b.color, "style": value.b.style };
- }
- }
- }
- else{
- borderInfoCompute[bd_r + "_" + bd_c].b = null;
- }
- }
- }
- else{
- delete borderInfoCompute[bd_r + "_" + bd_c];
- }
- }
- }
- }
- return borderInfoCompute;
- }
- //获取数据类型
- var getObjType = function (obj) {
- let toString = Object.prototype.toString;
- let map = {
- '[object Boolean]': 'boolean',
- '[object Number]': 'number',
- '[object String]': 'string',
- '[object Function]': 'function',
- '[object Array]': 'array',
- '[object Date]': 'date',
- '[object RegExp]': 'regExp',
- '[object Undefined]': 'undefined',
- '[object Null]': 'null',
- '[object Object]': 'object'
- }
- return map[toString.call(obj)];
- }
- var setStyleAndValue = function (cellArr, worksheet) {
- if (!Array.isArray(cellArr)) return;
- cellArr.forEach(function (row, rowid) {
- const dbrow = worksheet.getRow(rowid+1);
- //设置单元格行高,默认乘以1倍
- dbrow.height=luckysheet.getRowHeight([rowid])[rowid]
- row.every(function (cell, columnid) {
- if (!cell) return true;
- if(rowid==0){
- const dobCol = worksheet.getColumn(columnid+1);
- //设置单元格列宽除以8
- dobCol.width=luckysheet.getColumnWidth([columnid])[columnid]/8
- }
- let fill = fillConvert(cell.bg);
- let font = fontConvert(cell.ff, cell.fc, cell.bl, cell.it, cell.fs, cell.cl, cell.ul);
- let alignment = alignmentConvert(cell.vt, cell.ht, cell.tb, cell.tr);
- let value;
- var v='';
- if(cell.ct&&cell.ct.t=='inlineStr'){
- var s=cell.ct.s;
- s.forEach(function(val,num){
- v+=val.v;
- })
- }else{
- v=cell.v;
- }
- if (cell.f) {
- value = { formula: cell.f, result: v };
- } else {
- value = v;
- }
- let target = worksheet.getCell(rowid + 1, columnid + 1);
- target.fill = fill;
- target.font = font;
- target.alignment = alignment;
- target.value = value;
- return true;
- })
- })
- }
- //转换颜色
- var rgb2hex =function(rgb) {
- if (rgb.charAt(0) == '#'){
- return rgb;
- }
- var ds = rgb.split(/\D+/);
- var decimal = Number(ds[1]) * 65536 + Number(ds[2]) * 256 + Number(ds[3]);
- return "#" + zero_fill_hex(decimal, 6);
- function zero_fill_hex(num, digits) {
- var s = num.toString(16);
- while (s.length < digits)
- s = "0" + s;
- return s;
- }
- }
- var fillConvert = function (bg) {
- if (!bg) {
- return null;
- // return {
- // type: 'pattern',
- // pattern: 'solid',
- // fgColor:{argb:'#ffffff'.replace('#','')}
- // }
- }
- bg = bg.indexOf('rgb')>-1 ?rgb2hex(bg):bg;
- let fill = {
- type: 'pattern',
- pattern: 'solid',
- fgColor: {argb: bg.replace('#', '')}
- }
- return fill
- }
- var fontConvert = function (ff = 0, fc = '#000000', bl = 0, it = 0, fs = 10, cl = 0, ul = 0) { // luckysheet:ff(样式), fc(颜色), bl(粗体), it(斜体), fs(大小), cl(删除线), ul(下划线)
- const luckyToExcel = {
- 0: '微软雅黑',
- 1: '宋体(Song)',
- 2: '黑体(ST Heiti)',
- 3: '楷体(ST Kaiti)',
- 4: '仿宋(ST FangSong)',
- 5: '新宋体(ST Song)',
- 6: '华文新魏',
- 7: '华文行楷',
- 8: '华文隶书',
- 9: 'Arial',
- 10: 'Times New Roman ',
- 11: 'Tahoma ',
- 12: 'Verdana',
- num2bl: function (num) {
- return num === 0 ? false : true
- }
- }
- let font = {
- name:ff,
- family: 1,
- size: fs,
- color: {argb: fc.replace('#', '')},
- bold: luckyToExcel.num2bl(bl),
- italic: luckyToExcel.num2bl(it),
- underline: luckyToExcel.num2bl(ul),
- strike: luckyToExcel.num2bl(cl)
- }
- return font;
- }
- var alignmentConvert = function (vt = 'default', ht = 'default', tb = 'default', tr = 'default') { // luckysheet:vt(垂直), ht(水平), tb(换行), tr(旋转)
- const luckyToExcel = {
- vertical: {
- 0: 'middle',
- 1: 'top',
- 2: 'bottom',
- default: 'middle'
- },
- horizontal: {
- 0: 'center',
- 1: 'left',
- 2: 'right',
- default: 'left'
- },
- wrapText: {
- 0: false,
- 1: false,
- 2: true,
- default: false
- },
- textRotation: {
- 0: 0,
- 1: 45,
- 2: -45,
- 3: 'vertical',
- 4: 90,
- 5: -90,
- default: 0
- }
- }
- let alignment = {
- vertical: luckyToExcel.vertical[vt],
- horizontal: luckyToExcel.horizontal[ht],
- wrapText: luckyToExcel.wrapText[tb],
- textRotation: luckyToExcel.textRotation[tr]
- }
- return alignment;
- }
- export { exportExcel }
|