2009-05-27 3 views
2

Я делаю вывод на стороне сервера excel с использованием 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 
}); 

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

ответ

3

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

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

Возможно, это поможет исправить вашу проблему.

+0

Он делает до такой степени - но я переводил с IList , чтобы преуспеть так - где в инструменте отражателя он использует процедурный метод для добавления строк на рабочий лист - мне нужно перебирать коллекцию и надеялся, что есть какая-то функция, которую я мог бы применить к рабочему листу после добавления данных для создания промежуточных итогов для меня. Единственный способ, которым я могу это сделать прямо сейчас, - перебрать данные после его добавления, выполнить группировку и суммировать manuall - что является полной PITA: s –

1

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

0

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

См OpenXmlSdk: make Excel Recalculate formula.

spreadSheet.WorkbookPart.Workbook.CalculationProperties.ForceFullCalculation = true; 
spreadSheet.WorkbookPart.Workbook.CalculationProperties.FullCalculationOnLoad = true; 
Смежные вопросы