如何在Datatables导出Excel时设置所有单元格顶部对齐?
Datatables导出Excel设置单元格顶部对齐
要解决导出Excel时单元格底部对齐的问题,需要在customize回调中修改Excel样式表的垂直对齐属性,同时保留文本换行的设置。以下是修改后的代码:
customize: function( xlsx ) { var sheet = xlsx.xl.worksheets['sheet1.xml']; var styles = xlsx.xl['styles.xml']; // 修改样式55(A-F列使用):设置垂直顶部对齐,保留自动换行 var style55 = $('xf', styles).eq(55); var alignment55 = style55.find('alignment'); if (alignment55.length) { alignment55.attr('vertical', 'top'); alignment55.attr('wrapText', 'true'); } else { style55.append('<alignment vertical="top" wrapText="true"/>'); } // 修改样式2(表头行使用):设置垂直顶部对齐 var style2 = $('xf', styles).eq(2); var alignment2 = style2.find('alignment'); if (alignment2.length) { alignment2.attr('vertical', 'top'); } else { style2.append('<alignment vertical="top"/>'); } // 修改样式51(A1单元格使用):设置垂直顶部对齐 var style51 = $('xf', styles).eq(51); var alignment51 = style51.find('alignment'); if (alignment51.length) { alignment51.attr('vertical', 'top'); } else { style51.append('<alignment vertical="top"/>'); } // 保留原有的单元格样式分配逻辑 $('row c[r^="B"]', sheet).attr( 's', '55' ); $('row c[r^="C"]', sheet).attr( 's', '55' ); $('row c[r^="A"]', sheet).attr( 's', '55' ); $('row c[r^="D"]', sheet).attr( 's', '55' ); $('row c[r^="E"]', sheet).attr( 's', '55' ); $('row c[r^="F"]', sheet).attr( 's', '55' ); $('row:nth-child(2) c', sheet).attr('s', '2'); $('row:nth-child(1) c', sheet).attr( 's', '2' ); $('row c[r^="A1"]', sheet).attr( 's', '51' ); }, exportOptions: { columns: ':visible', stripNewlines: false }
说明
- Excel的单元格样式集中在
styles.xml中,每个样式通过编号(即单元格的s属性值)引用 - 针对你代码中用到的3种样式(编号55、2、51),分别修改它们的垂直对齐属性为
top - 对于样式55,额外确保
wrapText="true"以保留文本换行功能 - 原有的单元格样式分配逻辑保持不变,只需修改对应样式的对齐规则
内容的提问来源于stack exchange,提问作者newuser
相关产品推荐
相关产品推荐

