12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838 |
- function exportSheetExcel(luckysheet, images, name = "file") { // 参数为luckysheet.getluckysheetfile()获取的对象
- // 1.创建工作簿,可以为工作簿添加属性
- let workbook = new ExcelJS.Workbook();
- // 2.创建表格,第二个参数可以配置创建什么样的工作表
- luckysheet.every(function(table) {
- if (table.data.length === 0) return true;
- let worksheet = workbook.addWorksheet(name);
- // 3.设置单元格合并,设置单元格边框,设置单元格样式,设置值
- setStyleAndValue(table.data, worksheet);
- setMerge(table.config.merge, worksheet);
- setBorder(table, worksheet);
- setImages(table, images, worksheet, workbook);
- return true;
- })
- // 4.写入 buffer
- const buffer = workbook.xlsx.writeBuffer()
- // 5.保存为文件
- buffer.then(function(buf) {
- saveFile(buf, name);
- uploadExcel(buf,'http://192.168.0.11:8084/api/uploadExcel')
-
- })
- }
- function uploadExcel(buffer, url) {
- const formData = new FormData();
- const randomId = GetQueryString('randomid')
- formData.append('file', new Blob([buffer], {
- type: 'application/octet-stream'
- }));
- formData.append("randomId", randomId);
- $.ajax({
- url: url,
- type: 'POST',
- data: formData,
- processData: false, // 告诉jQuery不要处理发送的数据
- contentType: false, // 告诉jQuery不要设置Content-Type请求头
- success: function(response) {
- // 上传成功
- console.log('上传成功');
- },
- error: function(xhr, status, error) {
- // 上传失败
- console.error('上传失败');
- }
- })
- }
- function arrayBufferToBase64(array) {
- array = new Uint8Array(array);
- var length = array.byteLength;
- var table = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
- 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
- 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
- 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
- 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
- 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
- 'w', 'x', 'y', 'z', '0', '1', '2', '3',
- '4', '5', '6', '7', '8', '9', '+', '/'
- ];
- var base64Str = '';
- for (var i = 0; length - i >= 3; i += 3) {
- var num1 = array[i];
- var num2 = array[i + 1];
- var num3 = array[i + 2];
- base64Str += table[num1 >>> 2] +
- table[((num1 & 0b11) << 4) | (num2 >>> 4)] +
- table[((num2 & 0b1111) << 2) | (num3 >>> 6)] +
- table[num3 & 0b111111];
- }
- var lastByte = length - i;
- if (lastByte === 1) {
- var lastNum1 = array[i];
- base64Str += table[lastNum1 >>> 2] + table[((lastNum1 & 0b11) << 4)] + '==';
- } else if (lastByte === 2) {
- var lastNum1 = array[i];
- var lastNum2 = array[i + 1];
- base64Str += table[lastNum1 >>> 2] +
- table[((lastNum1 & 0b11) << 4) | (lastNum2 >>> 4)] +
- table[(lastNum2 & 0b1111) << 2] +
- '=';
- }
- return base64Str;
- }
- 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;
- return Math.abs((num - 0) / (arr[maxIndex] - arr[minIndex])) + index;
- } 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, images, worksheet, workbook) {
- let {
- visibledatacolumn, //所有行的位置
- visibledatarow //所有列的位置
- } = {
- ...table
- }
- // if (typeof images != 'object') return;
- for (let key in images) {
- // 通过 base64 将图像添加到工作簿
- let myBase64Image = images[key].src;
- //开始行 开始列 结束行 结束列
- const item = images[key];
- const imageId = workbook.addImage({
- base64: myBase64Image,
- extension: 'png'
- });
- //console.log(myBase64Image)
- 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 = Number(getImagePosition(w_ed, visibledatacolumn).toFixed(0));
- const row_ed = Number(getImagePosition(h_ed, visibledatarow).toFixed(0));
- let result = `${cellPos(col_st,row_st)}:${cellPos(col_ed,row_ed)}`
- // worksheet.addImage(imageId, 'B7:G20');
- worksheet.addImage(imageId, result);
- }
- };
- //单元格数字转字母
- function cellPos(c, r, n) {
- let ordA = 'A'.charCodeAt(0);
- let ordZ = 'Z'.charCodeAt(0);
- let len = ordZ - ordA + 1;
- let s = "";
- while (c >= 0) {
- s = String.fromCharCode(c % len + ordA) + s;
- c = Math.floor(c / len) - 1;
- }
- if (n) {
- return s + (r + 1) + ":" + s + (r + n);
- } else {
- return s + (r + 1);
- }
- }
- 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.2倍
- dbrow.height = luckysheet.getRowHeight([rowid])[rowid] * 1.2;
- 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 color = fc ? '' : (fc + "").indexOf('rgb') > -1 ? util.rgb2hex(fc) : fc;
- let font = {
- name: ff,
- family: 1,
- size: fs,
- color: {
- argb: color.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: 'top'
- },
- 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;
- }
|