2011-02-08 12 views
6

मैं पहले कॉलम (जिसमें तिथियां शामिल हैं) और हेडर पंक्ति के भीतर पहला शून्य सेल ढूंढकर सी # का उपयोग कर Excel तालिका के आयामों को खोजने का प्रयास कर रहा हूं।एक शून्य संदर्भ अपवाद पर रनटाइम बाइंडिंग निष्पादित नहीं कर सकता

public static void findingTableBounds() 
    { 
     string dateCol = ""; 
     ArrayList dateColumn = new ArrayList(); 
     ArrayList numberOfColumns = new ArrayList(); 

     for (int column = 1; column < currentRow; column++) 
     { 
      dateCol = ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2.ToString(); 
      if (dateCol != "") 
      { 
       dateColumn.Add(dateCol); 
       currentRow++; 
       totalRow++; 
       Console.WriteLine("Total Row: {0}", totalRow);    
      } 
      else 
      { 
       Console.WriteLine("Total Row: {0}", totalRow); 
       currentRow = 2; 
      } 
     } 

** नोट:: इस विधि के लिए एक बंद कोष्ठक है, मैं इसे शामिल नहीं किया था वहाँ पाश है कि ठीक उसी करता है के लिए एक और है, क्योंकि

यहाँ कोड मैं अभी उपयोग कर रहा हूँ है उपरोक्त कोड के रूप में चीज लेकिन केवल कितने कॉलम हैं।

त्रुटि "dateCol = ((Excel.Range) workSheet.Cells [currentRow, 1]) पर होती है। Value2.ToString();" मुझे पूरा यकीन है कि ऐसा होता है क्योंकि मैं स्ट्रिंग एक गैर-शून्य प्रकार के रूप में dateCol (एक स्ट्रिंग) को एक शून्य मान (सेल) असाइन करने का प्रयास कर रहा हूं। दुर्भाग्य से मुझे यकीन नहीं है कि समस्या को कैसे हल किया जाए।

+3

आपके परिवर्तनीय नाम प्रतीत होते हैं ... अजीब। 'कॉलम

उत्तर

9

स्ट्रिंग में शून्य मान लागू करना संभव है, लेकिन ((Excel.Range)workSheet.Cells[currentRow, 1]).Value2 शून्य है, तो उसके पास कोई फ़ंक्शन ToString() फ़ंक्शन नहीं है, इसलिए इसे निष्पादित करने का प्रयास नहीं किया जाता है। क्या यह कहता है कि यह किस प्रकार का अपवाद है? क्योंकि वहाँ एक बड़ा समस्या हो सकती है ...

+0

अदृश्य बॉब, पूर्ण अपवाद "अपवाद: एक शून्य संदर्भ पर रनटाइम बाध्यकारी निष्पादित नहीं कर सकता"। –

+0

अदृश्य बॉब, जब मैंने फ़ंक्शन ToString() पर आपकी टिप्पणी देखी तो मैंने कोड को थोड़ा सा बदलने का फैसला किया। अब "डेटकोल" एक डबल है, और मैं जांचता हूं कि अगर डबल == नल और यह काम करता है। मुझे अभी भी पता नहीं है कि एक स्ट्रिंग के साथ कोशिकाओं को कैसे जांचें ताकि यदि आप समाधान के बारे में सोच सकें तो मैं इसे अपने प्रोग्राम के साथ परीक्षण करूँगा। धन्यवाद, जेसी –

+0

अन्य खोए हुए आत्माओं की मदद करने के लिए, मैंने इस पोस्ट को ऊपर उठाया और बस जोड़ दिया: 'अगर (((एक्सेल। रेंज) कामशीट। कैल्स [वर्तमान पंक्ति, 1])। Value2! = Null) {... } '। – Sylvain

1

ऊपर पोस्ट के संबंध में

(मैं उस पर टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है) अन्य खो आत्माओं की मदद करने के लिए, मैं इस पोस्ट बढ़ा और बस जोड़ देगा:

अगर ((एक्सेल.रेंज) कामशीट। कैल्स [वर्तमान पंक्ति, 1])। Value2! = null) {...}।
- सिल्वेन फ़र, 16 '15 21:07

मैं एक मुद्दा था और यह प्रयोग किया जाता है, लेकिन पाया गया कि, मेरे मामले में कम से कम, मैं इस के लिए बदल दिया है:

if (excelWorksheet.Cells[row, column].Value2 != null) 
{ 
    return ((Excel.Range)excelWorksheet.Cells[row, column]).Value2.ToString(); 
} 
return "No data"; 

जो के लिए काम किया मेरा विशेष मामला, कम से कम। एक्सेल होने पर त्रुटियों में रेंज भाग।

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