SheetJS XLSX技术求助:数值格式已实现,需解决单元格右对齐问题
解决SheetJS单元格右对齐不生效的问题
你当前代码已经实现了千分位分隔和保留两位小数,但右对齐没生效的原因是:SheetJS不会自动根据数字格式设置对齐方式,必须显式配置单元格的样式属性。
SheetJS中,单元格的对齐样式存放在单元格对象的s属性下的alignment字段里。你需要在设置数字格式的同时,添加右对齐的样式配置。
修改后的代码如下:
var xls1_name = 'xlsheet_'+(new Date()).toLocaleDateString('en-us').replace(/[\-\:\.]/g, "")+'_'+(new Date()).toLocaleTimeString().replace(/[\-\:\.]/g, "")+'.xlsx'; var xls1 = XLSX.utils.table_to_book(document.getElementById('xls1'), {sheet:"xlsheet"}); var ws = xls1.Sheets.xlsheet; let range = XLSX.utils.decode_range(ws['!ref']); var cellNumberFormat = '#,##0.00'; var colsFmt = ['H','I','J','K','L','M','O','Q','S','N','T','U','V','W']; if( range.e.r > 1) { for ( let i = 3; i <= range.e.r+1; i++) { for ( var idx = 0; idx < colsFmt.length; idx++) { const cellKey = colsFmt[idx]+i; // 设置数字格式 ws[cellKey].z = cellNumberFormat; // 初始化样式对象(如果不存在) if (!ws[cellKey].s) ws[cellKey].s = {}; // 设置右对齐 ws[cellKey].s.alignment = { horizontal: 'right' }; } } } return XLSX.writeFile(xls1, xls1_name);
关键修改点:
- 为每个目标单元格初始化
s样式对象,避免覆盖已有样式 - 添加
alignment.horizontal = 'right'配置,强制单元格内容右对齐
这样修改后,目标单元格就能同时实现千分位小数格式和右对齐效果。
内容的提问来源于stack exchange,提问作者K.Krishna Raju
相关产品推荐
相关产品推荐

