[英]excelJS wrapText in Table columns
有沒有辦法讓 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,
});
我還嘗試將“對齊”放在“樣式”對象中,但在 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 對象,看看我是否可以獲得其中所有單元格的引用,遍歷它們,然后設置對齊方式。 但是我無法在表格中獲取單元格。
您可以按行或按列設置對齊方式。
循環遍歷所有行並設置對齊和文本換行:
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 };
}
設置第 5 列和第 7 列的對齊和文本換行:
sheet.getColumn(5).alignment = { vertical: 'middle', wrapText: true };
sheet.getColumn(7).alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
此外,如果您要換行文本,您可能希望單元格為文本。 您可以使用 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;
我通過檢測表包含在哪些行中,然后遍歷每一行,然后遍歷每一行的單元格來實現一種解決方法。 然后最后在每個單元格上設置 wrapText 。
//Record where the table starts
const firstTableRowNum = SOME_NUM;
//Create the table
ws.addTable({
name: 'someTable',
ref: `A${firstTableRowNum}`,
columns: columns,
rows: rows,
});
//Record table's last row
let lastRowNum = ws.lastRow.number;
const lastTableRowNum = lastRowNum;
//Loop through all table's row
for (let i=firstTableRowNum; i<= lastTableRowNum; i++) {
const row = ws.getRow(i);
//Now loop through every row's cell and finally set alignment
row.eachCell({includeEmpty: true}, (cell => {
cell.alignment = { vertical: 'middle', horizontal: 'center', wrapText: true };
}));
}
誰能看到更有效的方法來做到這一點? 我很想在創建表格的列時以另一種方式完成它。 但似乎 API 不允許這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.