Как скрыть столбцы в электронной таблице OpenXML, используя C #? - PullRequest
4 голосов
/ 20 октября 2011

Я использую DocumentFormat.OpenXML с C #. Как скрыть определенные столбцы?
Некоторая часть кода:

using (SpreadsheetDocument sDocument = SpreadsheetDocument.Open(resultFileName, true))
{
    WorkbookPart workbookPart = sDocument.WorkbookPart;
    WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();

    var relId = workbookPart.GetIdOfPart(worksheetPart);

    GenerateWorksheetPartContent(worksheetPart, data, templateSheet);

    var columns = worksheetPart.Worksheet.Descendants<Column>(); <-- Empty

    int[] colomnsToHide = new int[] { 3, 8, 16, 17, 18 };

    foreach (int i in colomnsToHide)
    {
        columns[i].Hidden = true;
    }
}

templateSheet - данные листа из xlsx-шаблона.
данные - данные для вставки.

Есть предложения?

1 Ответ

4 голосов
/ 25 октября 2011

Потомок столбца добавляется в часть листа только при наличии определенного поведения столбца, например размеров, скрытия или группировки. Вы можете явно добавить определения столбцов следующим образом:

Columns columns = new Columns();

// Min & Max refer to the 1-indexed column ordinal
Column column3 = new Column(){ Min = 3, Max = 3, Width = 0, CustomWidth = true, Hidden = true };
Column column8 = new Column(){ Min = 8, Max = 8, Width = 0, CustomWidth = true, Hidden = true };
// ... repeat for each column

columns.Append(column3);
columns.Append(column8);
worksheetPart.Append(columns);

Сделайте это для каждого столбца, который вы хотите скрыть

...