Добавить промежуточные итоги к данным в электронной таблице - PullRequest
2 голосов
/ 27 мая 2009

Я делаю некоторые выходные данные на стороне сервера, используя OpenXML Sdk v2 ctp. Кто-нибудь здесь имел опыт использования этого - конкретно mpre:

Есть ли способ добавить промежуточные итоги к данным в электронной таблице с помощью SDK? или мне нужно вручную перебирать данные, добавляя свойство OutlineLevel?

rows.Add(new Row(cells.ToArray()) { 
    RowIndex = (UInt32Value)Convert.ToUInt32(idx), 
    Spans = new ListValue<StringValue>() { InnerText = "1:2" }, 
    OutlineLevel = (ByteValue)groupLevelCount 
});

это будет настоящая PITA, если мне придется делать это вручную, так как там мне нужно сделать многоуровневую группировку и сортировку

Ответы [ 3 ]

3 голосов
/ 27 мая 2009

Вы пытались использовать документ DocumentReflector, включенный в SDK? Инструмент DocumentReflector может загрузить документ OpenXML и выполнить обратный инжиниринг кода для генерации этого документа с помощью SDK. Другими словами, он генерирует код C # из файла xlsx.

Инструмент DocumentReflector находится в папке «Инструменты» в папке установки Open XML Format SDK 2.0.

Может быть, это поможет решить вашу проблему.

1 голос
/ 09 сентября 2011

Короткий ответ - нет. OpenXML SDK предоставляет вам полный доступ к файлу XLSX. Вы можете добавлять, удалять и / или изменять элементы в книге. Но это все, что нужно - низкий уровень доступа к элементам. Он не имеет какой-либо функции обработки.

0 голосов
/ 08 декабря 2011

Если в рабочей книге есть макрос или формула, охватывающая диапазон ячеек, вы можете настроить его на выполнение при открытии электронной таблицы:

См. OpenXmlSdk: сделать формулу Excel для пересчета.

spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true;
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; 
...