表格列中的excelJS wrapText

use*_*616 3 javascript excel node.js exceljs

有没有办法让 wrapText 为表中的列工作?我正在尝试以下操作,但它没有在 excel 中注册。

const columnsStyle = { font: { name: 'Arial Black', size: 12 } };
const columns = [
            { name: 'PO#', style: columnsStyle, alignment: { wrapText:true } }
];
 ws.addTable({
                name: 'name',
                ref: `A${lastRowNum}`,
                columns: columns,
                rows: rows,
            });
Run Code Online (Sandbox Code Playgroud)

我还尝试将“对齐”放在“样式”对象中,但在 excel 中打开时会导致错误。(表格看起来不同,没有换行文字,excel 说尝试创建它时出错)

const columnsStyle = { font: { name: 'Arial Black', size: 12 }, alignment: { wrapText:true } }; const columns = [ { name: 'PO#', style: columnsStyle, } ];

我还想将表格这些列中的所有单元格也包装起来。有没有人知道如何做到这一点?我看了好几次文档,找不到任何具体的东西。

注意:我知道我可以做到 ws.getCell(ref).alignment = {wrapText:true},所以我尝试查看 table 对象,看看我是否可以获得其中所有单元格的引用,遍历它们并设置对齐方式。但是我无法在表格中获取单元格。

Tar*_*tar 6

您可以按行或按列设置对齐方式。

循环遍历所有行并设置对齐和文本换行:

var sheet = workbook.addWorksheet(sheetName, { pageSetup: { paperSize: 9, orientation: 'landscape' } });

// Add data to sheet here, e.g. sheet.addRow

let rowIndex = 1;
for (rowIndex; rowIndex <= sheet.rowCount; rowIndex++) {
    sheet.getRow(rowIndex).alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
}
Run Code Online (Sandbox Code Playgroud)

设置第 5 列和第 7 列的对齐和文本换行:

sheet.getColumn(5).alignment = { vertical: 'middle', wrapText: true };
sheet.getColumn(7).alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
Run Code Online (Sandbox Code Playgroud)

此外,如果您要换行文本,您可能希望单元格为文本。您可以使用 numFmt: '@' 在列标题样式中进行设置。像这样:

const columnHeaders = [
    { header: 'Column 1 Title', key: 'COL_ONE', width: 10, style: { numFmt: '@' } },
    { header: 'Column 2 Title', key: 'COL_TWO', width: 32, style: { numFmt: '@' } },
]

sheet.columns = columnHeaders;
Run Code Online (Sandbox Code Playgroud)