Проблемы производительности .NET OpenXML
Я пытаюсь записать файл Excel с веб-сервера ASP.NET, используя OpenXML. У меня около 2100 записей, и на это уходит около 20-30 секунд. В любом случае, я могу сделать это быстрее? Извлечение 2100 строк из БД занимает доли секунды. Не уверен, почему манипулирование ими в памяти займет больше времени.
Примечание. ExcelWriter - это наш пользовательский класс, но все его методы взяты непосредственно из кода по этой ссылке,http://msdn.microsoft.com/en-us/library/cc861607.aspx
<code> public static MemoryStream CreateThingReport(List<Thing> things, MemoryStream template) { SpreadsheetDocument spreadsheet = SpreadsheetDocument.Open(template, true); WorksheetPart workSheetPart = spreadsheet.WorkbookPart.WorksheetParts.First(); SharedStringTablePart sharedStringPart = spreadsheet.WorkbookPart.GetPartsOfType<SharedStringTablePart>().First(); Cell cell = null; int index = 0; //create cell formatting for header text Alignment wrappedAlignment = new Alignment { WrapText = true }; uint rowOffset = 2; foreach (Thing t in things) { //Received Date cell = ExcelWriter.InsertCellIntoWorksheet("A", rowOffset, workSheetPart); index = ExcelWriter.InsertSharedStringItem(t.CreateDate.ToShortDateString(), sharedStringPart); cell.CellValue = new CellValue(index.ToString()); cell.DataType = new DocumentFormat.OpenXml.EnumValue<CellValues>(CellValues.SharedString); //Car Part Name cell = ExcelWriter.InsertCellIntoWorksheet("B", rowOffset, workSheetPart); index = ExcelWriter.InsertSharedStringItem(t.CarPart.Name, sharedStringPart); cell.CellValue = new CellValue(index.ToString()); cell.DataType = new DocumentFormat.OpenXml.EnumValue<CellValues>(CellValues.SharedString); rowOffset++; } workSheetPart.Worksheet.Save(); spreadsheet.WorkbookPart.Workbook.Save(); spreadsheet.Close(); return template; </code>