جاوااسکریپت - چگونه عرض ستون را در exceljs بهطور خودکار تنظیم کنیم
من باید عرض ستون را با exceljs بهصورت خودکار تنظیم کنم. فایل اکسل من باید پویا باشد و فقط ستونهایی که کاربر در درخواست ارائه میدهد را در اکسل ذخیره کند. برای این مورد من این سینتکس را ارائه میکنم:
workSheet.getRow(1).values = dto.columns;
که نام ستون را در ردیف اول با نامهای ارائه شده در dto.columns ذخیره میکند.
اما من باید عرض را برای هر ستون تنظیم کنم، من این را امتحان میکنم:
for(let i=0; i <= dto.columns.length-1; i++) {
workSheet.columns = [
{key: dto.columns[i], width: Object.keys(dto.columns[i]).length}
]
}
اما این هیچ چیزی برای من تعیین نمیکند با :
آیا کسی میتواند به من بگوید چگونه میتوانم یک تابع autosize برای این مشکل ایجاد کنم؟
ممنون از هر کمکی
پاسخ شماره ۱
شما سلولها را تکرار میکنید و طول هر کدام را به این صورت بررسی میکنید
worksheet.columns.forEach(function (column, i) {
let maxLength = 0;
column["eachCell"]({ includeEmpty: true }, function (cell) {
var columnLength = cell.value ? cell.value.toString().length : 10;
if (columnLength > maxLength ) {
maxLength = columnLength;
}
});
column.width = maxLength < 10 ? 10 : maxLength;
});
پاسخ شماره ۲
این برای من کار میکند، تو میتوانی اینطور انجامش بدهی:
private AdjustColumnWidth(worksheet) {
worksheet.columns.forEach(column => {
const lengths = column.values.map(v => v.toString().length);
const maxLength = Math.max(...lengths.filter(v => typeof v === 'number'));
column.width = maxLength;
});
}
