मैं ओपनएक्सएमएल का उपयोग कर एएसपी.NET वेब सर्वर से एक्सेल फ़ाइल लिखने का प्रयास कर रहा हूं। मेरे पास लगभग 2100 रिकॉर्ड हैं और ऐसा करने के लिए लगभग 20-30 सेकंड लगते हैं। किसी भी तरह से मैं इसे तेजी से कर सकते हैं? डीबी से 2100 पंक्तियों को पुनः प्राप्त करना एक सेकंड का अंश लेता है। निश्चित नहीं है कि स्मृति में उन्हें क्यों जोड़ना अब और अधिक समय लेगा।.NET OpenXML प्रदर्शन समस्या
नोट: ExcelWriter हमारे कस्टम वर्ग http://msdn.microsoft.com/en-us/library/cc861607.aspx
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;
मुझे एक ही समस्या का सामना करना पड़ रहा है ... मुझे 1000+ पंक्तियां लिखने की ज़रूरत है और कुछ मामलों में 10000+ पंक्तियां और यह नरक की तरह धीमी हो रही है ... यहां आपने कहा है कि आप हैश टेबल का उपयोग कर सकते हैं क्या आप एक उदाहरण दे सकते हैं? या यदि किसी अन्य चीज का उपयोग आपने प्रदर्शन को बेहतर बनाने के लिए किया था ... – kunjee
मैं 500K पंक्तियों को देख रहा हूं। क्या आपने इस पोस्ट के बाद से अन्य सुधार किए हैं? मैं स्मृति उपयोग को कम करने के लिए SAX विधि में स्थानांतरित हो गया हूं। और मैं ~ 1.1 सेकंड प्रति 1000 पंक्तियों को देखता हूं। यदि आप इससे अधिक तेज़ी से प्राप्त करते हैं तो कृपया साझा करें। – CaptainBli