xlsx-style 行高设置

!rows,xlsx-style没有提供这个功能,但是xlsx有这个功能,所以解决这个问题方法有

步骤:
  1. 使用静态文件替代import (1)将node_modules里的xlsx-style的文件夹下的 xlsx.core.min.js拿出来放在静态文件放置的文件夹下 (2)index.html中引入

    <script src="<%= BASE_URL %>cdn/xlsx-style/xlsx.core.min.js" charset="utf-8"></script>

(3)删除import xlsxstyle代码

2.修改xlsx.core.min.js

位置: write_ws_xml_data

完整版代码如下:

var DEF_PPI = 96, PPI = DEF_PPI;
function px2pt(px) { return px * 96 / PPI; }
function pt2px(pt) { return pt * PPI / 96; }
function write_ws_xml_data(ws, opts, idx, wb) {
  var o = [], r = [], range = safe_decode_range(ws['!ref']), cell="", ref, rr = "", cols = [], R=0, C=0, rows = ws['!rows'];
  var dense = Array.isArray(ws);
  var params = ({r:rr}), row, height = -1;
  for(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C);
  for(R = range.s.r; R <= range.e.r; ++R) {
    r = [];
    rr = encode_row(R);
    for(C = range.s.c; C <= range.e.c; ++C) {
      ref = cols[C] + rr;
      var _cell = dense ? (ws[R]||[])[C]: ws[ref];
      if(_cell === undefined) continue;
      if((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell);
   }
    if(r.length > 0 || (rows && rows[R])) {
      params = ({r:rr});
      if(rows && rows[R]) {
        row = rows[R];
        if(row.hidden) params.hidden = 1;
        height = -1;
        if (row.hpx) height = px2pt(row.hpx);
        else if (row.hpt) height = row.hpt;
        if (height > -1) { params.ht = height; params.customHeight = 1; }
        if (row.level) { params.outlineLevel = row.level; }
     }
      o[o.length] = (writextag('row', r.join(""), params));
   }
 }
  if(rows) for(; R < rows.length; ++R) {
    if(rows && rows[R]) {
      params = ({r:R+1});
      row = rows[R];
      if(row.hidden) params.hidden = 1;
      height = -1;
      if (row.hpx) height = px2pt(row.hpx);
      else if (row.hpt) height = row.hpt;
      if (height > -1) { params.ht = height; params.customHeight = 1; }
      if (row.level) { params.outlineLevel = row.level; }
      o[o.length] = (writextag('row', "", params));
   }
 }
  return o.join("");
}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注