table2excel表格导出带样式

总结一下前端excel导出
在这里插入图片描述
在这里插入图片描述

if (cell.tagName === ‘TH’ && !cellObject.s) {
cellObject.s = {
font: { bold: true },//字体
fill:{
fgColor:{rgb:‘c6c6c6’},bgColor:{rgb:‘c6c6c6’}
},//背景色
alignment:{
vertical:‘center’,
horizontal:‘center’,
wrapText:false

		},
		border:{
			top:{style:'thin',color:{rgb:'000000'}},
			bottom:{style:'thin',color:{rgb:'000000'}},
			left:{style:'thin',color:{rgb:'000000'}},
			right:{style:'thin',color:{rgb:'000000'}},
	    }//边框
    };
  }
  //数据样式
  if (cell.tagName === 'TD' && !cellObject.s) {
    cellObject.s = { 
	
		
		alignment:{
			vertical:'center',
			horizontal:'center',
			wrapText:false

		},
		border:{
			top:{style:'thin',color:{rgb:'000000'}},
			bottom:{style:'thin',color:{rgb:'000000'}},
			left:{style:'thin',color:{rgb:'000000'}},
			right:{style:'thin',color:{rgb:'000000'}},
	    }
    };
  }
  样式添加成功之后,合并单元格会遇到合并的单元格添加边框无效的问题

在这里插入图片描述
一直没找到解决的办法,最后求教大佬给了思路
在这里插入图片描述

在这里插入图片描述

逻辑就是根据合并单元格的配置,sheet的配置将所有合并掉的单个单元格都加上border配置。
var worksheet = cells.reduce(function (sheet, row, rowIndex) {
// iterate over all row cells
row.forEach(function (cell, columnIndex) {
lastColumn = Math.max(lastColumn, columnIndex);

      // convert the row and column indices to a XLSX index
      var ref = (0, _encodeCell.encodeCell)({
        c: columnIndex,
        r: rowIndex
      });

      // only save actual cells and convert them to XLSX-Cell objects
      if (cell) {
        sheet[ref] = (0, _cellToObject2.default)(cell, typeHandlers);
      } else {
        sheet[ref] = { t: 's', v: '',s:{
			font: { bold: true },
			fill:{
				fgColor:{rgb:'c6c6c6'},bgColor:{rgb:'c6c6c6'}
			},
			alignment:{
				vertical:'center',
				horizontal:'center',
				wrapText:false

			},
			border:{
				top:{style:'thin',color:{rgb:'000000'}},
				bottom:{style:'thin',color:{rgb:'000000'}},
				left:{style:'thin',color:{rgb:'000000'}},
				right:{style:'thin',color:{rgb:'000000'}},
			}
		}};
      }
    });
	
    return sheet;
  }, {});
  还有导出日期格式设置、输入框input导出设置
  
  ***/ function(module, exports) {

'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

/**
 * Generates a cell object for an input field cell.
 *
 * @param {HTMLTableCellElement} cell - The cell.
 *
 * @returns {object} - A cell object of the cell or `null` if the cell doesn't
 * fulfill the criteria of an input field cell.
 */
//输入框value值
exports.default = function (cell) {
	var input = cell.querySelector('input');
  var span = cell.querySelector('span[class="td_unit"]');
  if(input!=null&&span!=null){
	if (input) return { t: 's', v: input.value+''+span.innerText};
  }
  

  input = cell.querySelector('select');
  if (input) return { t: 's', v: input.options[input.selectedIndex].textContent };

  return null;
};

/***/ },
具体根据自己需求修改。
纠结了两天才解决掉,记录一下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值