2015-08-04 1 views
0

спасибо за помощь, я получаю исключение: Ошибка сохранения файла C: { «Ссылка на объект не указывает на экземпляр объекта»} \ U ..... EPPLUS динамический NamedRange

StackTrace: at OfficeOpenXml.ExcelPackage.Save() at MINAG.SMEA.Business.ExcelBusinessService.CreateTableExcel (десятичный опрос) в каталоге c: \ Users \ luciano \ Desktop \ Новая папка \ реализация \ MINAG.SMEA.Business \ ExcelBusinessService.cs : линия 2048

(только что трассировки стека)

М y текущий код:

FileInfo newFile = new FileInfo(file); 
       ExcelPackage excPck = new ExcelPackage(newFile); 

       foreach (SURVEY_BASE_TABLE_LIST item in survey.SURVEY_BASE_TABLE_LIST) 
       { 
        BASE_TABLE_LIST table = item.BASE_TABLE_LIST; 
        Int32 limit = table.CODE.Length; 
        if (limit > 31) 
         limit = 31; 
        string dynamicRangeFormula = "OFFSET('" + table.CODE.Substring(0, limit) + "'!$A$1;0;0;COUNTA('" + table.CODE.Substring(0, limit) + "'!$A$1:$A$1000)+1;COUNTA('" + table.CODE.Substring(0, limit) + "'!$1:$1))"; 
        var ws = excPck.Workbook.Worksheets.Add("Pivot_" + table.CODE); 
        ExcelNamedRange newRange = new ExcelNamedRange(table.CODE.Substring(0, limit), null, ws, "C3", excPck.Workbook.Names.Count) 
         { 
          Formula = dynamicRangeFormula 
         }; 

        var excelPivot = ws.PivotTables.Add(ws.Cells["A1"], newRange, "Pivot_" + table.CODE); 



       } 
       excPck.Save(); 

Любые идеи?

+0

Btw я Assum ошибка на сводной таблицы/диапазон, но шаг за шагом отлаживать все кажется хорошо –

+0

Возможно придется сделать некоторые Additonal работайте над своей сводной таблицей, например, установите RowFields и т. д. Ознакомьтесь с примером 12 исходного кода EPPLus (функция RunSample12): https://epplus.codeplex.com/SourceControl/latest#SampleApp/Sample12.cs – Ernie

+0

Поблем со всеми примерами, которые были использованы, состоит в том, что они используют предустановленный источник данных var dataRange = wsData.Cells ["A1"]. LoadFromCollection ( из s в списке orderby s.LastName, s.FirstName select s, true, OfficeOpenXml.Table.TableStyles.Medium2); В моем случае мой диапазон должен быть формулой смещения .. Мне удалось заставить это работать с interop .. но я не могу запустить interop на IIS на сервере: \ –

ответ

0

Чтобы построить новый диапазон, вы хотите ExcelNamedRange, который имеет открытый конструктор, а не ExcelRange. Так что-то вроде этого будет вам новый именованный диапазон с формулой:

var ws = excPck.Workbook.Worksheets.Add("Pivot_" + table.CODE); 
var newRange = new ExcelNamedRange("NewRange", null, ws, "C3", excPck.Workbook.Names.Count) 
{ 
    Formula = "SUM(A1:A4)" 
}; 
excPck.Workbook.Names.Add(table.CODE, newRange); 
+0

Привет, спасибо за помощь, я получаю чек отредактированный вопрос plz –

 Смежные вопросы

  • Нет связанных вопросов^_^