2009-05-26 14 views
12

मैं Excel शीट से कैसे पढ़ूं और चिह्नित चयन (क्षेत्र) को एक बहुआयामी सरणी में लोड करूं? एक्सेल में एक कॉलम स्वयं एक बहु आयामी सरणी हो सकता है क्योंकि इसमें केवल एक मान से अधिक होगा।एक्सेल (बहुआयामी ऐरे में रेंज) से पढ़ना सी #

विचार (यह सुनिश्चित नहीं है कि यह कितना अच्छा या बुरा है) अभी सभी एक्सेल के माध्यम से लूप के लिए करना है। एरिया (चयनित फ़ील्ड्स) और उस क्षेत्र की सामग्री को बहु आयामी सरणी में जोड़ें। चूंकि बहु आयामी सरणी प्रकार वस्तु [,] है और इसलिए गैर-सामान्य है, इसमें कोई सुविधाजनक जोड़ने() विधि नहीं है। इसे सभी को मैन्युअल रूप से करने की जरूरत है।

कोई विचार अगर यह दृष्टिकोण ठीक है या यह अधिक कुशलतापूर्वक किया जा सकता है?

उत्तर

18

आप सरणी के रूप में रेंज के मूल्य पढ़ सकते हैं:

using (MSExcel.Application app = MSExcel.Application.CreateApplication()) 
{ 
    MSExcel.Workbook book1 = app.Workbooks.Open(this.txtOpen_FilePath.Text); 
    MSExcel.Worksheet sheet = (MSExcel.Worksheet)book1.Worksheets[1]; 
    MSExcel.Range range = sheet.GetRange("A1", "F13"); 

    object value = range.Value; //the value is boxed two-dimensional array 
} 

यह कोड स्निपेट .NET wrapper for MS Office से है। लेकिन एमएस एक्सेल में वीएसटीओ या वीबीए में एक ही प्रिंसिपल है।

2

यहाँ SpreadsheetGear के साथ ऐसा करना सी # कोड है:

// Load the workbook. 
    SpreadsheetGear.IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook(@"MyWorkbook.xlsx"); 
    // Get a range of cells as an array of object[,]. 
    object[,] values = (object[,])workbook.Worksheets["MySheet"].Cells["A1:J10"].Value; 

SpreadsheetGear भी एक समय ताकि आप प्रदर्शन का त्याग किए बिना एक सरणी के लिए मूल्यों को कॉपी से बच सकते हैं पर कोशिकाओं एक तक पहुँचने के लिए तेजी से एपीआई प्रदान करता है।

अस्वीकरण: मैं खुद SpreadsheetGear LLC

+0

बेहतर SpreadsheetGear बनाम एक्सेल इंटरॉप उपयोग करने के लिए क्यों है? – gyurisc

+0

यह आपके द्वारा बनाई जा रही एप्लिकेशन के प्रकार और आप इसके साथ क्या कर रहे हैं इस पर निर्भर करता है। उन्हें यहां सूचीबद्ध करने के बजाय, इस पृष्ठ के दाईं ओर हमारे ग्राहकों से टिप्पणियों पर नज़र डालें: http://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx –

+0

"तेज़ एपीआई भी प्रदान करता है" ... क्या यह है कि स्प्रेडशीट गियर। एडवांस्ड। कैल्स एपीआई या सिर्फ यह तथ्य कि हम किसी ऑब्जेक्ट पर मान कास्टिंग कर रहे हैं [,]? मुझे लगता है कि आप सीधे डबल []] भी डाले जा सकते हैं? – Terry

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