由于公司业务需求需要在生成的excel表格中有大量批注,但是官方文档对批注的可设置项太少。
而且如果你在代码里设置了表格单元格的大小,生成后你打开excel文件的时候excel会自动把批注框大小根据单元格大小等比缩大缩小(这意味着你就算修改xlsx.js的默认输出批注框大小也无效),如果批注内容比较多,每个都要手动点击设置批注框查看完整内容非常繁琐。
需要改动源代码xlsx.js。
有需要的可以去下载来修改。https://github.com/sheetjs/sheetjs
在源代码找到这个方法:
function write_comments_vml
把以下代码:
'<v:textbox><div style="text-align:left;"></div></v:textbox>',
改成:
'<v:textbox style=\'mso-fit-shape-to-text:t\'><div style="text-align:left;"></div></v:textbox>',
如果智能一点可以改成:
'<v:textbox ' + (x[1].autoSize ? 'style=\'mso-fit-shape-to-text:t\'' : '') +'><div style="text-align:left;"></div></v:textbox>',
然后在使用批注的代码加上这个自定义属性autoSize(批注的使用需要自行先看懂官方文档):
//批注
if (note && note != '') {
rObj.c = [];
rObj.c.hidden = true;
rObj.c.autoSize = true;
rObj.c.push({ a: 'sys', t: note });
}
如果只是临时性可以用vb执行。参考:
Excel根据批注的内容自动调整批注大小_路在何方-CSDN博客