Problemy z wydajnością .NET OpenXML
Próbuję napisać plik Excel z serwera WWW ASP.NET przy użyciu OpenXML. Mam około 2100 rekordów i zajmuje to około 20-30 sekund. W jakikolwiek sposób mogę to zrobić szybciej? Pobieranie 2100 wierszy z bazy danych zajmuje ułamek sekundy. Nie jestem pewien, dlaczego manipulowanie nimi w pamięci zajęłoby więcej czasu.
Uwaga: ExcelWriter jest naszą klasą niestandardową, ale wszystkie jego metody pochodzą bezpośrednio z kodu w tym łączu,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>