جاوااسکریپت - چگونه عرض ستون را در 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;
  });
}