Автозаполнение колонок Excel - PullRequest
0 голосов
/ 23 октября 2019

Я создаю Excel из своего приложения и хочу получить файл Excel с размером столбца автозаполнения.

Заполнив таблицу в рабочей книге, я установил столбцы следующим образом:

public void AutoFitColumns(Sheet sheet)
{
    //get all cells in sheet
    IEnumerable<Cell> cells = GetCells(sheet);
    //find max column number
    int maxColumnIndex = cells.Select(a => GetColumnIndex(a.CellReference))
        .Where(a => a.HasValue)
        .Select(a => a.Value)
        .Distinct()
        .Max();

    Worksheet worksheet = GetWorkSheetPart(sheet).Worksheet;
    // Check if the column collection exists
    Columns cs = worksheet.Elements<Columns>().FirstOrDefault();

    if (cs == null)
    {
        // If Columns appended to worksheet after sheetdata Excel will throw an error.
        SheetData sd = worksheet.Elements<SheetData>().FirstOrDefault();
        if (sd != null)
            cs = worksheet.InsertBefore(new Columns(), sd);
        else
        {
            cs = new Columns();
            worksheet.Append(cs);
        }
    }

    Column c = new Column
    {
        Min = (uint)1,
        Max = (uint)maxColumnIndex,
        Width = 100D,
        CustomWidth = true,
        BestFit = true
    };
    cs.Append(c);
}

Почему-то я не вижу свойства столбца BestFit. Я нашел https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/cc802410(v=office.14)?redirectedfrom=MSDN там, где это описано:

Флаг, указывающий, установлено ли для указанного столбца (столбцов) значение «наилучшее соответствие». Для «наилучшего соответствия» устанавливается значение «истина» в следующих условиях: ширина столбца никогда не задавалась пользователем вручную, И ширина столбца не является шириной по умолчанию. «Наилучшее соответствие» означает, что когда числа вводятся в ячейку, содержащуюся встолбец «наилучшим образом», ширина столбца должна автоматически изменить размер для отображения числа. [Примечание: в лучших случаях ширина столбца не должна быть меньше, только больше. примечание к концу]

Итак, я попробовал несколько способов применения автоматической ширины столбца, как описано в документе, и метод «Проба / Ошибка»

Кто-нибудь знает, почему этоне работает?

Мои шаги следующие:

  • Создание стилей и форматов, используемых в Excel
  • Создание таблицы с данными (отдельные значения в правильныхформат) для каждой ячейки
  • Я хочу создать столбцы и сравнить таблицу с автоматической шириной столбца в соответствии с содержанием
...