2013-06-26 1 views
5

कोई मेरी मदद कर सकता है?सूची <custom> एक्सेल सी #

मैं एक संरचना

public struct Data 
    { 

     public string aaaAAA;   
     public string bbbBBB;   
     public string cccCCC; 
     ... 
     ... 
    } 

फिर एक सूची में एक डेटा में लाने के लिए कुछ कोड है, नई सूची आदि creaitng

मैं तो उत्कृष्टता प्राप्त करने जो मैं इस तरह किया है इस के परिवहन के लिए चाहते हैं ,

 for (int r = 0; r < newlist.Count; r++) 
     { 
      ws.Cells[row,1] = newlist[r].aaaAAA; 
      ws.Cells[row,2] = newlist[r].bbbBBB; 
      ws.Cells[row,3] = newlist[r].cccBBB; 
     } 

यह काम करता है, लेकिन यह दर्दनाक रूप से धीमा है। मैं 12,000 से अधिक पंक्तियों में इनपुट कर रहा हूं और मेरी संरचना में 85 तत्व हैं (इसलिए प्रत्येक पंक्ति में डेटा के 85 कॉलम हैं)।

क्या कोई इसे जल्दी बनाने में मदद कर सकता है ??

धन्यवाद, Timujin

+0

क्या आपने ओलेडीबी का उपयोग करने की कोशिश की है या इसे Excel फ़ाइल में लिखने की रिपोर्ट की है? – NDraskovic

+1

यदि आप Excel 2007 या बाद में काम कर रहे हैं तो आप OpenXml में देखना चाहेंगे। – juharr

+0

ने न तो कोशिश की ... सी # – Timujin

उत्तर

6

हैं के रूप में @juharr उल्लेख OpenXML उपयोग करने के लिए, एक्सेल दस्तावेज़ बनाने के लिए ClosedXML पुस्तकालय को देखने में सक्षम हैं, here पाया।

अपने उदाहरण का उपयोग ऊपर आप उसके बाद निम्न कोड इस्तेमाल कर सकते हैं:

var wb = new XLWorkbook(); 
var ws = wb.Worksheets.Add("Data_Test_Worksheet"); 
ws.Cell(1, 1).InsertData(newList); 
wb.SaveAs(@"c:\temp\Data_Test.xlsx"); 

आप एक शीर्ष लेख पंक्ति की आवश्यकता होती है, तो आप सिर्फ उन मैन्युअल रूप से जोड़ने के लिए नीचे दिए गए की तरह कुछ का उपयोग कर तो फिर तुम होगा होता (ऊपर पंक्ति 2 से अपनी पंक्तियों डालने) शुरू:

PropertyInfo[] properties = newList.First().GetType().GetProperties(); 
List<string> headerNames = properties.Select(prop => prop.Name).ToList(); 
for (int i = 0; i < headerNames.Count; i++) 
{ 
    ws.Cell(1, i + 1).Value = headerNames[i]; 
} 

प्रदर्शन आवश्यकता पर, इस सरणी के माध्यम से पुनरावृत्ति से अधिक performant हो रहा है। मैंने अपनी तरफ से कुछ बुनियादी परीक्षण किया है और 2 गुणों वाले नमूना ऑब्जेक्ट के लिए 20 000 पंक्तियां डालने के लिए, इसमें कुल 1 सेकंड लिया गया है।

+0

धन्यवाद, बीमार इसे सीधे देखें: !!!-) – Timujin

+0

मुझे विश्वास नहीं है कि आपने कोड की कुछ पंक्तियों में ऐसा किया है !!!! धन्यवाद एक लाख ... पीएस .. आप लोग इस सामान को कैसे सीखते हैं, ive कई किताबें पढ़ते हैं, कहीं भी नहीं मिलते !!! – Timujin

+0

मैं अपनी सूची वस्तु के साथ एक्सेल बनाने में सक्षम हूं, लेकिन मैं हेडर के साथ कैसे बना सकता हूं? – Velkumar

संबंधित मुद्दे